Question

J'utilise ce code pour faire une demande HTTPGET à mon serveur Web. Cela fonctionne bien sur l'émulateur mais pas dans mon sens HTC. L'excution se termine simplement sans faire de demande HTTP. Une idée ?

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();
        }
    }
Était-ce utile?

La solution

Bien que votre approche soit correcte et fonctionnera, il est beaucoup plus facile d'utiliser Entités Classe d'aide pour récupérer le corps de réponse en tant que chaîne. Simplement:

String body = EntityUtils.toString(httpEntity);

Autres conseils

Il n'y avait ni exception ni avertissement dans StackTrace. Seuls les messages d'allocation de mémoire. Quoi qu'il en soit, je l'ai résolu en utilisant URLConnection au lieu de 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();
    }

Pour une raison quelconque, cela a fonctionné. Essayant toujours de comprendre ce qui ne va pas.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top