J'ai une application qui se connecte à un service web qui utilise un certificat Entrust valide. La seule différence est qu'il s'agit d'un SSL de type "wildcard".
Le problème est le suivant : Je reçois un
ERROR/NoHttpResponseException(5195): org.apache.http.NoHttpResponseException: The target server failed to respond
quand je suis en 3G. Quand je suis en WIFI, ça marche, quand je suis sur le simulateur, ça marche, quand je fais un tethering sur le simulateur via mon téléphone 3G, ça marche. Mais l'application sur mon téléphone depuis la 3G ne fonctionne pas du tout. Testé sur un HTC Legend CM7.0.3(2.3.3) et Nexus S 2.3.3 sur 2 réseaux différents (Virgin Mobile Canada et Fido).
J'ai un dump PCAP de mon appareil qui montre quelques erreurs, mais je ne le comprends pas vraiment.
Numéro d'accusé de réception : TCP cassé. Le champ d'accusé de réception est non nul alors que le drapeau ACK n'est pas activé.
J'ai essayé le correctif sur ce question ce question aussi. Je ne sais pas où aller.
A propos, le service web fonctionne avec le navigateur sur 3G.
Nous utilisons également l'authentification de base avec HttpRequestInterceptor.
Je pense que c'est tout ce que je peux donner comme détails. Si vous avez besoin de quelque chose d'autre, n'hésitez pas à me le demander.
Ce site question est aussi lié, j'ai essayé les deux solutions, aucune ne fonctionne.
Modifier
Je commence à penser que cela conviendrait mieux à serverfault.com.
C'est la décharge fichier et la capture d'écran
Edit 2
Voici le code que j'utilise pour me connecter au service web en question.
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();
}