Richtige Weg, um einen HTTP-request in Android
Welches ist der beste Weg, um eine HTTP-Verbindung. Ich meine, mit proxies und so weiter. Jetzt bin ich mit dieser hier:
StringBuilder entity = new StringBuilder();
entity.append("request body");
AndroidHttpClient httpClient = AndroidHttpClient.newInstance(null);
String proxyHost = android.net.Proxy.getDefaultHost();
int proxyPort = android.net.Proxy.getDefaultPort();
if (proxyHost != null && proxyPort > 0) {
HttpHost proxy = new HttpHost(proxyHost, proxyPort);
ConnRouteParams.setDefaultProxy(httpClient.getParams(), proxy);
}
HttpPost httpPost = new HttpPost("https://w.qiwi.ru/term2/xmlutf.jsp");
httpPost.setEntity(new StringEntity(entity.toString(), "UTF-8"));
httpPost.setHeader("Content-Type", "application/x-www-form-urlencoded");
HttpParams params = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(params, 15000);
HttpConnectionParams.setSoTimeout(params, 30000);
httpPost.setParams(params);
HttpResponse httpResponse = httpClient.execute(httpPost);
int responseCode = httpResponse.getStatusLine().getStatusCode();
if (responseCode == HttpStatus.SC_OK) {
//parsing response
}
Ich bin mir nicht wirklich sicher, ob das ok ist, weil einer meiner Kunden sagt mir, er hat eine IllegalArgumentException rechts nach Einstellung proxy in seinem APN-Einstellungen.
- Ich verwende diesen code in AsyncTask
- Ich habe nicht gefunden, einen Einsatz von proxies gibt. Was ist, wenn in Ihr android-Handy wäre da ein proxy in deine APN-Einstellungen?
- Sorry, keine Idee... 🙁
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden Sie eine Methode namens executeRequest das macht den eigentlichen Aufruf der host-API_REST_HOST, auf diese Weise (API_REST_HOST kann ein Wert wie "api.flickr.com" zur flickr-rest-api. Die HTTP und den port Hinzugefügt wird),
Diese API aufrufen, von hier diesem Weg:
Wo Ihr uri aufgebaut ist wie dieses:
Ihre mClient erklärt wird, wie eine Klasse-level-variable auf diese Weise
und schließlich Ihre parseResponse getan werden kann in dieser Weise(sagen Sie, Sie wollen, um das analysieren von XML-Daten)
Dieser code kümmert sich um alle möglichen Ausnahmen und zeigt, wie man richtig zu analysieren Antwort aus einen input-stream aus einer HTTP-Verbindung.
Wie Sie bereits wissen, stellen Sie bitte sicher, dass Sie dies in einem separaten thread und nicht im UI-thread.
Das ist es 🙂