2011-02-15 84 views
1

我使用此代码对我的Web服务器执行HttpGet请求。它可以在模拟器上正常工作,但不适用于我的HTC Sense。执行只是在没有任何http请求的情况下结束。任何想法 ?HttpClient不能在真实设备上工作

File f = new File(user.getPhotopath()); 
List<NameValuePair> reqparams = new LinkedList<NameValuePair>(); 
reqparams.add(new BasicNameValuePair("email", user.getEmail())); 
reqparams.add(new BasicNameValuePair("pwd", user.getPassword())); 
reqparams.add(new BasicNameValuePair("name", user.getScreenName())); 
reqparams.add(new BasicNameValuePair("photo", f.getName())); 
reqparams.add(new BasicNameValuePair("preference", user.getPrefs())); 
reqparams.add(new BasicNameValuePair("bluetoothid", bid)); 

String urlstring = "http://www.mysite.com/me?"+ URLEncodedUtils.format(reqparams, "utf-8"); 

try { 
    URL url = new URL(urlstring); 

URI myURI = null; 
try { 
    myURI = url.toURI(); 
} catch (URISyntaxException e) { 
       e.printStackTrace(); 
} 
HttpClient httpClient = new DefaultHttpClient(); 
HttpGet getMethod = new HttpGet(myURI); 
HttpResponse webServerResponse = null; 
HttpEntity httpEntity = null; 
try { 
    webServerResponse = httpClient.execute(getMethod); 
    httpEntity = webServerResponse.getEntity(); 
} catch (ClientProtocolException e) { 
    e.printStackTrace(); 
} catch (IOException e) { 
    e.printStackTrace(); 
} 
if (httpEntity != null) { 

    InputStream instream = httpEntity.getContent(); 
    BufferedReader reader = new BufferedReader(new InputStreamReader(instream)); 
    StringBuilder sb = new StringBuilder(); 
    String line = null; 
    try { 
     while ((line = reader.readLine()) != null) { 
      sb.append(line + "\n"); 
     } 
    } catch (IOException e) { 
      e.printStackTrace(); 
    } finally { 
     try { 
      resultStr = sb.toString(); 
      instream.close(); 
     } catch (IOException e) { 
       e.printStackTrace(); 
     } 
    } 
+0

向我们展示堆栈跟踪 – Falmarri 2011-02-16 00:43:10

+0

事实上,stacktrace会有帮助,以及您的模拟器是否在代理之后运行。 – ndrix 2011-02-18 20:27:38

回答

0

尽管您的方法是正确的并且可行,但使用EntityUtils帮助程序类以字符串形式检索响应正文要容易得多。简单地说:

String body = EntityUtils.toString(httpEntity); 
0

stacktrace中没有异常或警告。只有内存分配消息。无论如何,我解决了它通过使用URLConnection而不是HttpClient:

try { 
     URL url = new URL(urlstring); 
     URLConnection connection = url.openConnection(); 
     InputStream inputStream = connection.getInputStream(); 
     BufferedInputStream bufferedInput = new BufferedInputStream(inputStream); 

    // Read the response into a byte array 
     ByteArrayBuffer byteArray = new ByteArrayBuffer(50); 
     int current = 0; 
     while((current = bufferedInput.read()) != -1){ 
      byteArray.append((byte)current); 
     } 

     // Construct a String object from the byte array containing the response 
    resultStr = new String(byteArray.toByteArray()); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

由于某种原因,它的工作。仍试图找出哪里出了问题。

+0

谢谢大家的答案。 – 2011-02-21 23:06:57

相关问题