Использование HttpClient и HttpPost в Android с параметрами публикации

Я пишу код для Android-приложения, которое должно принимать данные, упакуйте его как Json и отправьте на веб-сервер, который, в свою очередь, должен ответить с помощью json.

Использование запроса GET работает нормально, но по какой-то причине при использовании POST все данные, кажется, удаляются, и сервер не получает что угодно.

Вот фрагмент кода:

HttpParams params = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(params, 5000);
HttpConnectionParams.setSoTimeout(params, 5000);        
DefaultHttpClient httpClient = new DefaultHttpClient(params);
BasicCookieStore cookieStore = new BasicCookieStore();
httpClient.setCookieStore(cookieStore);

String uri = JSON_ADDRESS;
String result = "";
String username = "user";
String apikey = "something";
String contentType = "application/json";

JSONObject jsonObj = new JSONObject();

try {
    jsonObj.put("username", username);
    jsonObj.put("apikey", apikey);
} catch (JSONException e) {
    Log.e(TAG, "JSONException: " + e);
}

HttpPost httpPost = new HttpPost(uri);
List<NameValuePair> postParams = new ArrayList<NameValuePair>();
postParams.add(new BasicNameValuePair("json", jsonObj.toString()));
HttpGet httpGet = null;
try {
    UrlEncodedFormEntity entity = new UrlEncodedFormEntity(postParams);
    entity.setContentEncoding(HTTP.UTF_8);
    entity.setContentType("application/json");
    httpPost.setEntity(entity);

    httpPost.setHeader("Content-Type", contentType);
    httpPost.setHeader("Accept", contentType);
} catch (UnsupportedEncodingException e) {
    Log.e(TAG, "UnsupportedEncodingException: " + e);
}

try {
    HttpResponse httpResponse = httpClient.execute(httpPost);
    HttpEntity httpEntity = httpResponse.getEntity();

    if (httpEntity != null) {
        InputStream is = httpEntity.getContent();
        result = StringUtils.convertStreamToString(is);
        Log.i(TAG, "Result: " + result);
    }
} catch (ClientProtocolException e) {
    Log.e(TAG, "ClientProtocolException: " + e);
} catch (IOException e) {
    Log.e(TAG, "IOException: " + e);
}

return result;

Я думаю, что следовал общим рекомендациям о том, как создавать параметры и размещать их, но, очевидно, нет.

Любая помощь или указатели на то, где я могу найти решение, очень приветствуются на данном этапе (потратив несколько часов на то, чтобы понять, что никакие почтовые данные не были отправлены). На реальном сервере Wicket работает на Tomcat, но я также протестировал его на простой странице PHP, без разницы.

33
задан Patrick 17 May 2011 в 09:39
поделиться