Ежевика: потребляет спокойный веб-сервис - PullRequest
0 голосов
/ 23 декабря 2011
public void consumeIt(){



    HttpConnection con = null; 
    InputStream is = null;

    try { 
        String url = "http://where.yahooapis.com/geocode?q=1600+Pennsylvania+Avenue,+Washington,+DC"; 
        System.out.println("poo" + url);
        con = (HttpConnection) Connector.open(url); 
        final int responseCode = con.getResponseCode(); 
        if (responseCode != HttpConnection.HTTP_OK) { 
            System.out.println("response code:" + responseCode); 
        } 
        System.out.println("Works here");
        is = con.openInputStream(); 
        byte[] responseData = new byte[10000]; 
        int length = 0; 
        StringBuffer rawResponse = new StringBuffer(); 
        while (-1 != (length = is.read(responseData))) { 
            rawResponse.append(new String(responseData, 0, length)); 
        } 
        final String result = rawResponse.toString(); 
        System.out.println("result:" + result); 


    } 
    catch (final Exception ex) { 
        System.out.println("error:" + ex.getMessage()); 
    } 
    finally { 
        try { 
            is.close(); 
            is = null; 
            con.close(); 
            con = null; 
        } 
        catch(Exception e){} 
    } 



    }

Я нашел приведенный выше код, который должен захватывать XML-данные, возвращаемые API, однако я не могу заставить его работать. Система распечатывается с «poo», но не «Работает здесь». Я понятия не имею, что не так. Я запускаю его на симуляторе 9700.

Почему так сложно подключиться к веб-сервису!

Ответы [ 3 ]

0 голосов
/ 23 декабря 2011

Я уже отвечал на этот тип ошибок, произошедших из-за расширений сети

просто посмотрите на этот ответ и внесите изменения в ваш код, абсолютно он будет работать

пожалуйста, проверьте следующую ссылку и проложите маршрут

https://stackoverflow.com/a/8575601/914111

после импорта двух классов в ваш проект просто измените код следующим образом

публичный void потреблениеIt () {

HttpConnection con = null; 
InputStream is = null;

try { 
    String url = "http://where.yahooapis.com/geocode?q=1600+Pennsylvania+Avenue,+Washington,+DC"; 
    System.out.println("poo" + url);
   HttpConnectionFactory factory = new HttpConnectionFactory(0);
   con = factory.getHttpConnection(url);
    final int responseCode = con.getResponseCode(); 
    if (responseCode != HttpConnection.HTTP_OK) { 
        System.out.println("response code:" + responseCode); 
    } 
    System.out.println("Works here");
    is = con.openInputStream(); 
    byte[] responseData = new byte[10000]; 
    int length = 0; 
    StringBuffer rawResponse = new StringBuffer(); 
    while (-1 != (length = is.read(responseData))) { 
        rawResponse.append(new String(responseData, 0, length)); 
    } 
    final String result = rawResponse.toString(); 
    System.out.println("result:" + result); 


} 
catch (final Exception ex) { 
    System.out.println("error:" + ex.getMessage()); 
} 
finally { 
    try { 
        is.close(); 
        is = null; 
        con.close(); 
        con = null; 
    } 
    catch(Exception e){} 
} 



}

Я получил вывод, как на моей консоли, как

result:<?xml version="1.0" encoding="UTF-8"?> <ResultSet version="1.0"><Error>0</Error><ErrorMessage>No error</ErrorMessage><Locale>us_US</Locale><Quality>87</Quality><Found>1</Found><Result><quality>85</quality><latitude>38.898717</latitude><longitude>-77.035974</longitude><offsetlat>38.898590</offsetlat><offsetlon>-77.035971</offsetlon><radius>500</radius><name></name><line1>1600 Pennsylvania Ave NW</line1><line2>Washington, DC  20006</line2><line3></line3><line4>United States</line4><house>1600</house><street>Pennsylvania Ave NW</street><xstreet></xstreet><unittype></unittype><unit></unit><postal>20006</postal><neighborhood></neighborhood><city>Washington</city><county>District of Columbia</county><state>District of Columbia</state><country>United States</country><countrycode>US</countrycode><statecode>DC</statecode><countycode>DC</countycode><uzip>20006</uzip><hash>B42121631CCA2B89</hash><woeid>12765843</woeid><woetype>11</woetype></Result></ResultSet> <!-- gws14.maps.sg1.yahoo.com uncompressed/chunked Thu Dec 22 21:22:38 PST 2011 --> <!-- wws2.geotech.sg1.yahoo.com uncompressed/chunked Thu Dec 22 21:22:38 PST 2011 -->
0 голосов
/ 06 марта 2012

Вы можете попробовать это.

public void consumeIt() 
{ 
    HttpConnection con = null; 
    InputStream is = null;
    String desiredEncoding = "ISO-8859-1";
    StringBuffer returnStringBuffer = new StringBuffer();
    OutputStream os=null;
    try 
      { 
          String url = "http://where.yahooapis.com/geocode?q=1600+Pennsylvania+Avenue,+Washington,+DC"; 
          System.out.println("poo" + url);
          HttpConnectionFactory factory = new HttpConnectionFactory(0);
          con = factory.getHttpConnection(url);
          final int responseCode = con.getResponseCode(); 
          if (responseCode != HttpConnection.HTTP_OK) 
          { 
              System.out.println("response code:" + responseCode); 
          } 
          System.out.println("Works here");
          is = con.openInputStream(); 
          int ch;
          String contenttype = httpConnection.getHeaderField("Content-Type");
          if (contenttype != null)
          {
             contenttype = contenttype.toUpperCase();
             if (contenttype.indexOf("UTF-8") != -1)
             {
                     desiredEncoding = "UTF-8";
             }  
          }
          InputStreamReader isr = new InputStreamReader(inputStream,desiredEncoding);
          while ((ch = isr.read()) != -1) 
          {
                returnStringBuffer.append((char) ch);
          }
         result=returnStringBuffer.toString();
         System.out.println("Result........"+result);
      }
      catch (final Exception ex) 
      { 
           System.out.println("error:" + ex.getMessage()); 
      } 
      finally 
      { 
         try 
         { 
              is.close(); 
              is = null; 
              con.close(); 
              con = null; 
         }
       }
 } 
0 голосов
/ 23 декабря 2011

Пожалуйста, прочитайте о транспортах BB и сети.

Для быстрого исправления используйте этот URL:

"http://where.yahooapis.com/geocode?q=1600+Pennsylvania+Avenue,+Washington,+DC;deviceside=true"

вместо твоего.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...