Comment éviter « 505: Version HTTP non prise en charge » erreur?
-
26-09-2019 - |
Question
Je suis en train d'utiliser l'API Bing SOAP pour une requête de recherche simple. Mais maintenant que j'ai finalement compris comment envoyer la demande à l'aide JAX-WS, je suis bloqué à nouveau. Je reçois la réponse
com.sun.xml.internal.ws.client.ClientTransportException: The server sent HTTP status code 505: HTTP Version not supported
quand j'envoie la demande. aider quelqu'un peut me sortir?
J'utilise invocation dynamique avec JAX-WS 2.0, si cela fait une différence.
Dispatch<SOAPMessage> dispatch = service.createDispatch(
portName, SOAPMessage.class, Service.Mode.MESSAGE);
MessageFactory messageFactory = ((SOAPBinding) dispatch.getBinding())
.getMessageFactory();
SOAPMessage request = messageFactory.createMessage();
// Add content to the request
SOAPMessage response = dispatch.invoke(request);
Wireshark me dit que l'en-tête de requête contient POST /soap.asmx HTTP/1.1
et la réponse revient également avec un HTTP / 1.1 versioning. Est-ce pas ce que cela signifie, il va bien?
Merci, moxn
UPDATE : Ce n'est pas une erreur spécifique JAX-WS. Je mis en œuvre la communication via Commons HTTPClient et encore obtenir le même 505.
Après les en-têtes de la demande HTTPClient:
Content-Length: 435
Content-Type: text/xml
Host: api.bing.net:80
Connection: Keep-Alive
User-Agent: Apache-HttpClient/4.0.1 (java 1.5)
Expect: 100-Continue
UPDATE : Il ne fonctionne pas avec HTTP / 1.0 btw ...
La solution 2
En attendant, je suis ma réponse dans le forum des développeurs Bing. Il semble que Microsoft est en quelque sorte en utilisant une sémantique différente pour les codes de réponse HTTP que la plupart et 505 peut aussi vouloir dire « Quelque chose ne va pas avec votre requête SOAP » . Il se trouve que je ne pas utiliser les espaces de noms corrects. Après les fixer, la demande est passée par bien.
Voici le lien au fil dans le forum Bing.
Autres conseils
Avez-vous essayé d'ajouter ce qui suit à app.config ou web.config?
<configuration>
<system.net>
<settings>
<servicePointManager expect100Continue="false" />
</settings>
</system.net>
</configuration>
Il est évident que l'envoi de la Expect: 100-continue
en-tête de requête provoque la « 505: HTTP Version non prise en charge ». Erreur d'être jeté