2010-09-02 3 views
0

nous recevons une demande 400/mauvaise lorsque nous envoyons une demande. Veuillez trouver notre code ci-dessous.Obtenir une 400 - mauvaise demande lors de l'envoi d'un xmlhttp à un wcf en utilisant vbscript

Public Sub test123() 
    URL = "http://dev1.xxxxx.employer/employer/v02/Employer.svc" 

    Dim requestDoc 
    Set requestDoc = CreateObject("MSXML2.DOMDocument.3.0") 

    Dim root 
    Set root = requestDoc.createNode(1, "Envelope", "http://schemas.xmlsoap.org/soap/envelope/") 
    requestDoc.appendChild root 

    Dim nodeBody 
    Set nodeBody = requestDoc.createNode(1, "Body", "http://schemas.xmlsoap.org/soap/envelope/") 
    root.appendChild nodeBody 

    Dim nodeOp 
    Set nodeOp = requestDoc.createNode(1, "Register", "http://xxxxx.com/Employer/Contracts/v2") 
    nodeBody.appendChild nodeOp 

    Dim nodeRequest 
    Set nodeRequest = requestDoc.createNode(1, "request", "http://xxxxx.com/Employer/Contracts/v2") 

    'content of the request will vary depending on the WCF Service.' 
    ' This one takes just a plain string. ' 

    Dim sv_strTempxml As Variant 
    sv_strTempxml1 = "<CreateProspectRequest xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema"">" _ 
    & "<Employer><PartyDisplayName>0707 NS2 DEV1 KRISH 001</PartyDisplayName><PreferredLanguageIdentifier xsi:nil=""true"" />" _ 
    & "<PartyIdentifier xsi:nil=""true"" /><PartyAddresses><PartyAddressStructure><BeginTimeStamp xsi:nil=""true"" /><CityName>Alexander City</CityName>" _ 
    & "<CountryCode>US</CountryCode><EndTimeStamp xsi:nil=""true"" /><FirstLineAddress>111 Main Street</FirstLineAddress><PostalCode>35010</PostalCode>" _ 
    & "<SecondJurisdictionCode>AL</SecondJurisdictionCode><SecondJurisdictionTypeCode>ST</SecondJurisdictionTypeCode><SecondLineAddress>PL</SecondLineAddress><AddressIdentifier xsi:nil=""true"" />" _ 
    & "<PartyIdentifier xsi:nil=""true"" /><AddressUsageIdentifier>100000</AddressUsageIdentifier><SecondJurisdiction>1</SecondJurisdiction><ChangeTypeCode xsi:nil=""true"" />" _ 
    & "</PartyAddressStructure></PartyAddresses><PreferredLanguage>100</PreferredLanguage><ChangeTypeCode xsi:nil=""true"" /><PartyTypeIdentifier xsi:nil=""true"" />" _ 
    & "<EstablishedDate xsi:nil=""true"" /><OrganizationTypeIdentifier>100018</OrganizationTypeIdentifier><OrganizationNames><OrganizationNameStructure>" _ 
    & "<NameEndTimestamp xsi:nil=""true"" /><NameStartTimestamp xsi:nil=""true"" /><OrganizationPartyName>0707 NS2 DEV1 KRISH 001</OrganizationPartyName><NameTypeIdentifier>1</NameTypeIdentifier>" _ 
    & "<PartyIdentifier xsi:nil=""true"" /><ChangeTypeCode xsi:nil=""true"" /></OrganizationNameStructure></OrganizationNames><ProspectReceivedDate xsi:nil=""true"" />" _ 
    & "<RatingGroupIdentifier xsi:nil=""true"" /></Employer><AffiliationCode>UUS</AffiliationCode></CreateProspectRequest>" 

    nodeRequest.Text = sv_strTempxml1 
    nodeOp.appendChild nodeRequest 

    Set nodeRequest = Nothing 
    Set nodeOp = Nothing 
    Set nodeBody = Nothing 
    Set root = Nothing 

    'MsgBox "sending request " & vbCrLf & requestDoc.XML 

    Set xmlhttp = CreateObject("MSXML2.ServerXMLHTTP.3.0") 
    ' set the proxy as necessary and desired ' 
    'xmlhttp.setProxy 2, "http://localhost:8888" 
    xmlhttp.Open "POST", URL, False 
    ' set SOAPAction as appropriate for the operation ' 
    xmlhttp.setRequestHeader "SOAPAction", "http://xxxxx.com/Employer/Contracts/v2/Employer/CreateProspect" 
    xmlhttp.setRequestHeader "Content-Type", "application/soap+xml; charset=utf-8" 
    xmlhttp.send requestDoc.XML 
    ' vbCrLf & "Raw XML response:" & vbCrLf 
    MsgBox xmlhttp.responseXML.XML 
End Sub 

est-il un élément que nous avons manqué

Santhosh

Répondre

0

Qu'est-ce que la liaison (s) est votre service WCF surexposées? Si vous utilisez le WsHttpBinding, vous devrez probablement utiliser https.

Si le service utilise un BasicHttpBinding, alors http devrait fonctionner, mais vous devrez changer le type de contenu en text/xml.

Mise à jour

La raison pour laquelle je dis cela est que je l'ai utilisé WebTests Visual Studio pour envoyer XML SOAP aux services WCF. Lors de l'accès aux points de terminaison HTTP de base, cela ne fonctionne que si j'utilise text/xml. Peut-être que vous avez besoin de mettre le contenu de l'en-tête SOAP dans le XML. Voici ce que je l'ai utilisé avec succès dans le passé:

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" 
      xmlns:a="http://www.w3.org/2005/08/addressing"> 
    <s:Header> 
     <a:Action s:mustUnderstand="1">[ACTION]</a:Action> 
     <a:To s:mustUnderstand="1">[ADDRESS]</a:To> 
    </s:Header> 
    <s:Body> 
     ... 
    </s:Body> 
</s:Envelope> 
+0

son à l'aide du Http de base obligatoire, et quand je change le contenu de type text/xml je reçois une erreur indiquant que le type de contenu devrait être « l'application/soap + xml " – user437792

+0

hmm, c'est bizarre, c'est ce que j'ai utilisé dans le passé. J'ai mis à jour ma réponse avec plus de détails ... –

Questions connexes