Почему мой HttpPut отправляет запрос GET с моего Android? - PullRequest
2 голосов
/ 22 февраля 2011

Я пытаюсь подключиться к веб-сервису REST с моего устройства Android и помещаю туда некоторые данные, но все, что я получаю, это результат GET.Даже мой веб-сервер настаивает, что это запрос GET.Что не так с моим кодом?

DefaultHttpClient httpclient = new DefaultHttpClient();
HttpPut httpPut = new HttpPut(url);
httpPut.addHeader("Content-Type", "application/xml; charset=utf-8");
httpPut.addHeader("User-Agent", "Android");
HttpEntity entity = new StringEntity(data);
httpPut.setEntity(entity);
HttpResponse response = httpclient.execute(httpPut);
HttpEntity input = response.getEntity();
StringBuilder result = new StringBuilder();
if (input != null) {
    InputStream instream = input.getContent();
    result = convertStreamToString(instream);
    instream.close();
}
httpclient.getConnectionManager().shutdown();
return result.toString();

Ответы [ 3 ]

0 голосов
/ 22 февраля 2011

Попробуйте посмотреть услышать
Пример кода Android HttpPut


Почему вы используете метод put, а не post?

0 голосов
/ 29 июля 2011

Я имел это случиться со мной с запросом POST. Моя проблема была связана с проблемой на стороне сервера, связанной с сочетанием использования нашим хостом прокси и mod_rewrite. Наше переписывание направляло весь трафик, не относящийся к www, на домен www и где-то во всем, что прокси-сервер нашего хоста преобразовывал запрос в GET и отбрасывал почтовые данные. Наше простое решение состояло в том, чтобы просто использовать версию www в начальном запросе, что позволяет избежать перезаписи. Не нужно было вносить какие-либо изменения на стороне сервера (что было бы сложно).

0 голосов
/ 22 февраля 2011

используйте JSONStringer, чтобы решить вашу проблему ...

Я много боролся за это ........

ваш код должен выглядеть примерно так ...

HttpPut request = new HttpPut("your URL");
JSONStringer json = new JSONStringer()
.object() 
 .key("cname").value(name)
 .key("cmail").value(email)

.endObject();

StringEntity entity = new StringEntity(json.toString());
                     entity.setContentType("application/json;charset=UTF-8");//text/plain;charset=UTF-8
                     entity.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE,"application/json;charset=UTF-8"));
                     request.setEntity(entity); 
                     // Send request to WCF service 
                     DefaultHttpClient httpClient = new DefaultHttpClient();

                     HttpResponse response = httpClient.execute(request); 

Спасибо ...

...