[Android] http-запросы

Тема в разделе "Hard & Soft & Code & Roll", создана пользователем UnbanGetup1, 13 сен 2015.

  1. UnbanGetup1 Spree is lie, Hetan is tie.
    Vintage

    Регистрация:
    7 дек 2013
    Сообщения:
    1.260
    Симпатии:
    421
    Пол:
    Мужской
    Кароче, типа, пишу прожку под андроид.
    Код:
    public void send(View view){
      
          
            try{
          
            //переменные всякие
            String url = "http://vk.com";
    
            URL obj = new URL(url);
            HttpURLConnection con = (HttpURLConnection) obj.openConnection();
    
            //гет-запрос
            con.setRequestMethod("GET");
    
            //не обращайте внимания с: P.S.: Очень важная строка, без неё мне не нужна программа
            con.setRequestProperty("User-Agent", "Dildo 3.0 (like a Penis), Mamka framework, Rapekit");
          
            //обработка ответа
            int responseCode = con.getResponseCode();
            Toast.makeText(this, "Response Code : " + responseCode, 2);
    
            BufferedReader in = new BufferedReader(
                new InputStreamReader(con.getInputStream()));
            String inputLine;
            StringBuffer response = new StringBuffer();
    
            while ((inputLine = in.readLine()) != null) {
                response.append(inputLine);
            }
            in.close();
            }catch(IOException io){Toast.makeText(this, io.toString(), 2);}
          
        }
    
    Код сдобрил комментариями для вас. Где ошибка - не знаю, но при вызове функции кнопкой, через атрибут onclick прожка вылетает. Пермишен на сеть в манифесте прописал. Хз чо делать, рили.

    UPD: компилятор, как вы поняли, ошибок не выдаёт.
     
    #1 UnbanGetup1, 13 сен 2015
    Последнее редактирование: 13 сен 2015
  2. HeMe3iC Overwatch
    Команда форума

    Регистрация:
    15 сен 2010
    Сообщения:
    627
    Симпатии:
    90
    Пол:
    Мужской
    Пиши логи, после каждой строки фукции записывай в лог-файл строку, например "1" "2" и тд. так ты сможешь выяснить до куда идет выполнение кода, и какая строка крашит прогу.
    алсо, если ты пытаешься сделать авторизацию через вк - она только по https работает, возможно какие-то другие части апи так же
     
  3. _TrueLecter_ All hail Lelouch!
    Vintage

    Регистрация:
    6 дек 2013
    Сообщения:
    2.394
    Симпатии:
    468
    Пол:
    Мужской
    Род занятий:
    Быдлокоддинг
    Минут 10 назад стыкнулся с такой же траблой. Только были не вылеты, а ошибки при запрсах, которые я ловил. Сутьв чем: В дроиде нельзя отсылать запросы в гравном потоке. Тобишь, либо создавай поток через Thread и там делай запросы, либо через более удобную вещь - класс AsyncTask. Пример:
    Код:
    class RetrieveFeedTask extends AsyncTask<String, Void, RSSFeed> {
    
    
    private Exception exception; protected RSSFeed doInBackground(String... urls) {
    try {
    URL url= new URL(urls[0]);SAXParserFactory factory =SAXParserFactory.newInstance();SAXParser parser=factory.newSAXParser();XMLReader xmlreader=parser.getXMLReader();RssHandler theRSSHandler=new RssHandler();xmlreader.setContentHandler(theRSSHandler);InputSource is=new InputSource(url.openStream());xmlreader.parse(is); return theRSSHandler.getFeed();} catch (Exception e) {
    this.exception = e; return null;}
    }
    
    protected void onPostExecute(RSSFeed feed) {
    // TODO: check this.exception// TODO: do something with the feed}
    }
    
    new RetrieveFeedTask().execute(urlToRssFeed);
    
    
    Или еще 3-й способ - сказать дроиду, что нам плевать на его ассинхронность и разрешить себе синхронность. гы, тафтология
    Код:
    StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
    StrictMode.setThreadPolicy(policy);
    
    Инфа отсюда
     
    #3 _TrueLecter_, 14 сен 2015
    Последнее редактирование: 14 сен 2015