Ich versuche gerade einen Http-Post mit Parametern an einen Server abzusetzen, was mir aber nicht gelingen will. Die Parameter kommen nie beim Server an.
Version 1: (funkioniert nicht!)
HttpPost post = new HttpPost(url);
List<NameValuePair> postParams = new ArrayList<NameValuePair>();
for(String key:params.keySet()){
postParams.add(new BasicNameValuePair(key, params.get(key));
}
post.addEntity(new UrlEncodedFormEntity(postParams));
return post;
}```
Version 2 (funktioniert nicht!)
``` private static HttpPost buildRequest(final String url, final Map<String, String> params) throws UnsupportedEncodingException {
HttpPost post = new HttpPost(url);
final HttpParams postParams = new BasicHttpParams();
for(String key:params.keySet()){
postParams.setParameter(key, params.get(key));
}
post.setParams(postParams);
return post;
}```
Version 3 (funktioniert, aber bestimmt so nicht gewollt)
``` private static HttpPost buildRequest(final String url, final Map<String, String> params) throws UnsupportedEncodingException {
final StringBuilder uri = new StringBuilder(url);
boolean first = true;
for (final String name : params.keySet()) {
uri.append(first ? "?" : "&");
first = false;
uri.append(URLEncoder.encode(name, HTTP.UTF_8));
uri.append("=");
uri.append(URLEncoder.encode(params.get(name), HTTP.UTF_8));
}
return new HttpPost(uri.toString());
}```
Und so schick ich den Request ab:
"
[spoiler]```private InputStream sendRequest(final HttpPost request) {
InputStream result = null;
try {
final HttpClient httpClient = new DefaultHttpClient();
final HttpResponse response = httpClient.execute(request);
final HttpEntity entity = response.getEntity();
result = entity.getContent();
}
catch (final Exception e) {
throw new RuntimeException("Error sending request="+request, e);
}
return result;
}```[/spoiler]
Bis auf Version 3 werden sonst die Parameter einfach weggelassen. Programmiere auf API-Level 16. Was mache ich falsch!? Kann doch nicht Sinn dieser ganzen APIs sein, dass ich mir den String am Ende doch selbst zusammenbasteln muss!? :mad: