У меня есть приложение, которое подключается к веб-службе, использующей действующий сертификат Entrust.Разница лишь в том, что это подстановочный SSL.
Проблема в том, что я получаю
ERROR/NoHttpResponseException(5195): org.apache.http.NoHttpResponseException: The target server failed to respond
, когда я нахожусь на 3G.Когда на WIFI это работает, на симуляторе это работает, привязывая симулятор через мои телефоны, 3G работает.Но приложение на моем телефоне от 3G не работает вообще.Протестировано на HTC Legend CM7.0.3 (2.3.3) и Nexus S 2.3.3 в двух разных сетях (Virgin Mobile Canada и Fido).
У меня есть дамп PCAP с моего устройства, который показывает некоторую ошибку,но я не очень хорошо понимаю.
Номер подтверждения: Сломан TCP.Поле подтверждения является ненулевым, в то время как флаг ACK не установлен
Я попытался исправить это вопрос этот вопрос .Я не знаю, куда еще идти.
Кстати, веб-сервис работает с браузером на 3G.
Мы также используем базовую аутентификацию с HttpRequestInterceptor.
Я думаю, что это все детали, которые я могу дать.Если нужно что-то еще, не стесняйтесь спрашивать.
Этот вопрос тоже связан, я пробовал оба исправления, ни один из них не работает.
Я начинаю думать, что это может быть лучше подходит для serverfault.com
Это дамп файл и скриншот
![PCAP](https://i.stack.imgur.com/6AAvB.png)
Редактировать 2
Это код, который я использую для подключения к рассматриваемому веб-сервису.
protected HttpEntity sendData(List<NameValuePair> pairs, String method)
throws ClientProtocolException, IOException,
AuthenticationException {
pairs.add(new BasicNameValuePair(KEY_SECURITY, KEY));
pairs.add(new BasicNameValuePair(LANG_KEY, lang));
pairs.add(new BasicNameValuePair(OS_KEY, OS));
pairs.add(new BasicNameValuePair(MODEL_KEY, model));
pairs.add(new BasicNameValuePair(CARRIER_KEY, carrier));
DefaultHttpClient client = getClient();
HttpPost post = new HttpPost();
try {
post.setHeader("Content-Type", "application/x-www-form-urlencoded");
post.setEntity(new UrlEncodedFormEntity(pairs));
} catch (UnsupportedEncodingException e1) {
Log.e("UnsupportedEncodingException", e1.toString());
}
URI uri = URI.create(method);
post.setURI(uri);
client.addRequestInterceptor(preemptiveAuth, 0);
HttpHost target = new HttpHost(host, port, protocol);
HttpContext httpContext = new BasicHttpContext();
HttpResponse response = client.execute(target, post, httpContext);
int statusCode = response.getStatusLine().getStatusCode();
if (statusCode == 401) {
throw new AuthenticationException("Invalid username or password");
}
return response.getEntity();
}