Почему мой запрос HttpPost разбивается на два запроса? - PullRequest
0 голосов
/ 16 ноября 2011

Просто немного стартовой информации. Я пишу приложение Andorid, которое общается с сервером, написанным на C # .Net с использованием платформы MVC. Каждый запрос является постом, и атрибут ActionFilter гарантирует это. Однако из-за этой проблемы .Net анализирует HttpMethod как «ST».

Ниже приведен код, который я использую во всем мире для отправки веб-запросов из моего приложения:

private String MakeRequest(String action, String params){       
    try {
        HttpPost request = new HttpPost(mProtocol + mSubDomain + mHost + action);

        String args;
        if (params != null) {
            args = params;
        } else {
            args = "[]";
        }

        StringEntity requestEntity;
        requestEntity = new StringEntity(args);
        requestEntity.setContentType("application/json;charset=UTF-8");
        requestEntity.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE,"application/json;charset=UTF-8"));
        request.setEntity(requestEntity);   

    HttpResponse response = mHttpClient.execute(request);

        HttpEntity responseEntity = response.getEntity();

        String jString = EntityUtils.toString(responseEntity);

        return jString;

    } catch (Exception e) {
        e.printStackTrace();
    }
    return null;
}

У меня проблема только с одним конкретным методом, все остальные методы работают нормально.

Следующая ссылка на файл pcap, который содержит трафик, поэтому он хорошо виден. (Я отфильтровал это только к применимым строкам) http://dl.dropbox.com/u/315661/defect.pcap

1 Ответ

2 голосов
/ 16 ноября 2011

Вы пытались отключить использование 100-Continue в своем POST? Как правило, он вам не нужен, поскольку он только увеличивает нагрузку на ваше общение с сервером - и он может вызвать проблемы, если служба (или какой-либо компонент на пути между вашим устройством и службой, например, прокси и т. д.), на который вы отправляете сообщения, не полностью соответствует.

HttpProtocolParams.setUseExpectContinue(params, false)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...