2009-11-03 5 views
0

Je dois créer HTTPS appeler un serveur distant qui renvoient une donnée la réponse de cette dose de serveur comprend pas un protocole HTTP valide
et je reçois cette erreurURL d'appel de .net sans valider le potocol HTTP

System.Net.WebException: le serveur a commis une violation de protocole. Section = ResponseStatusLine

i tous prêts a fait que useUnsafeHeaderParsing

mais cela n'a pas aidé probablement parce que le protocole HTTP est de mettre en œuvre si mal

puis-je dire .net sauter la validation du tout ou de l'utilisation une classe qui ne validera pas le protocole HTTP

quand je suis en utilisant un navigateur je peux voir la réponse

Répondre

1

Je la fin j'avais chaise et j'ai écrit un code simple dans VB6
je retourne à une DLL que DLL et enregistré ajouter referens au projet .net
il a fait l'appel vient me VB6 dose pas préforme HTTP validation du protocole
laid, mais travaillant

Option Explicit 

Dim UrlStr As String 

Public Sub InitUrlStr(ByVal pUrlStr As String) 
    UrlStr = pUrlStr 
End Sub 

Public Function SendHttpsRequest(ByVal pXml As String) As String 
    Dim WinHttp 
    Dim PostData 

    Set WinHttp = CreateObject("MSXML2.XMLHTTP") 

    PostData = pXml 

    WinHttp.Open "GET", UrlStr & PostData, False 

    WinHttp.Send ' Send request using https 
    SendHttpsRequest = WinHttp.responseText ' assign to local variable 

End Function 
0

Vous pouvez utiliser la ServerCertificateValidationCallback rappel pour ignorer les erreurs de validation du certificat:

ServicePointManager.ServerCertificateValidationCallback = 
    (sender, certificate, chain, sslPolicyErrors) => true; 

C'est une propriété statique qui pourrait être réglée avant d'exécuter la requête HTTP.

+0

ceci indiquera le serveur d'ignorer le certificat, mais pas le http potocol – Shvilam

0

Vous avez probablement un problème de l'autre côté du serveur. Je serais prêt à parier que vous n'allez pas du tout à l'autre site. Si vous parlez à un serveur Apache ou IIS standard, ils font un très bon travail d'implémentation de HTTP. Votre connexion peut être interrompue. Essayez de faire votre opération en utilisant un navigateur Web et voyez si cela fonctionne.

+0

quand je suis en utilisant un navigateur Web, il fonctionne très bien. Dans l'autre côté, une application attend probablement dans c qui implémentent le protocole HTTP par eux-mêmes pas un IIS ou Apache – Shvilam

0

HTTP est un protocole assez simple sur TCP. Vous pouvez utiliser une socket simple et envoyer vous-même la commande GET.

+0

comment puis-je le faire où puis-je trouver un exemple de code – Shvilam