android - HTTP 请求失败

标签 android

我必须得到这样的 HTTP 请求:

http://www.aroundertouch.com/queriesandroid1dot0/project/idProjet/45.484171;;9.050393;;Rotondi Group S.R.L. - Costruzione Macchine Abbigliamento/iphone/354781043339495/lang/en_US

使用这段代码:

url = new URL(query);
   Log.d(TAG,url.toString());
      connection = url.openConnection();
      httpConnection = (HttpURLConnection)connection; 
      int responseCode = httpConnection.getResponseCode(); 
      // HTTP status okay
      if (responseCode == HttpURLConnection.HTTP_OK) { 
       // preparo stream 
       in = httpConnection.getInputStream();
       DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
       DocumentBuilder db = dbf.newDocumentBuilder();
       dom = db.parse(in);      
      }
      // HTTP status fail 
      else{
       throw new Exception("responseCode != 200 OK in "+query);
      }
      in.close();
      httpConnection.disconnect();
      _ret = parseXML(dom);

我遇到这个异常,我怀疑它是由未编码的 URL 引起的,我该如何编码我的 URL?它不是由 HTTPURLConnection 自动编码的吗? 异常:

D/dalvikvm(10100): GC freed 3447 objects / 513168 bytes in 47ms
W/System.err(10100): org.xml.sax.SAXParseException: Unexpected end of document
W/System.err(10100):    at org.apache.harmony.xml.parsers.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:129)
W/System.err(10100):    at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:157)
W/System.err(10100):    at granet.arounder.webservice.ThreadDatiCard.doInBackground(ThreadDatiCard.java:76)
W/System.err(10100):    at granet.arounder.webservice.ThreadDatiCard.doInBackground(ThreadDatiCard.java:1)
W/System.err(10100):    at android.os.AsyncTask$2.call(AsyncTask.java:185)
W/System.err(10100):    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
W/System.err(10100):    at java.util.concurrent.FutureTask.run(FutureTask.java:137)
W/System.err(10100):    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068)
W/System.err(10100):    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:561)
W/System.err(10100):    at java.lang.Thread.run(Thread.java:1096)

非常感谢。

最佳答案

是的,您的 URL 中的数据包含错误的空格,可能导致您的请求不返回您期望解析的内容,请使用内置的 urlencoder。

http://developer.android.com/reference/java/net/URLEncoder.html

关于android - HTTP 请求失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4693710/

相关文章:

java - 在 Canvas 上操作大图像以保持宽高比会导致内存不足问题

android - 资源 ID 不能为空字符串(位于 'id' ,值为 '@+id/")

java - BLE 与 MiBand 3

android - 创建小按钮

javascript - Easeljs - 触摸事件在平板电脑和 Android 中不起作用 - 但为什么

java - 触摸屏灵敏度

Android 周期性工作对打瞌睡模式和应用待机友好

android - 在微调器中设置位置

android - 尽管有 AsyncTask,但不确定的 ProgressBar 卡住了(不旋转)

android - 如何监听 SpeakerPhone 的变化