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 ...

Était-ce utile?

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é

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top