2016-05-04 9 views
0

Ich versuche derzeit, MSXML2.ServerXMLHTTP zu verwenden, um eine POST http-Anforderung zu senden. Ich muss einen benutzerdefinierten Header "Auth" hinzufügen, damit meine Anfragen autorisiert werden, aber es scheint nicht zu funktionieren. Hier ist der Code für meine Post-Funktion:Benutzerdefinierter Header mit MSXML2.ServerXMLHTTP

Function post(path As String, authToken As String, postData As String) As String 
    Dim xhr As Object 
    Dim message As String 
On Error GoTo error: 

    Set xhr = CreateObject("MSXML2.ServerXMLHTTP") 
    xhr.Open "POST", path, False 
    xhr.setRequestHeader "Content-Type", "application/json" 
    xhr.setRequestHeader "Auth", authToken 
    xhr.send postData 

    If xhr.Status = 200 Then 
    message = xhr.responseText 
    Else 
    message = xhr.Status & ": " & xhr.statusText 
    End If 

    Set xhr = Nothing 
    post = message 
error: 
    Debug.Print "Error " & Err.Number; ":" & Err.Description 
End Function 

Und ich am Ende mit „Error -2147012746 Gewünscht Überschrift wurde nicht gefunden“ (Die Meldung wird tatsächlich übersetzt, da ich eine andere Sprache auf meinem Computer verwenden).

Allerdings hatte ich dieses Problem mit dem "Microsoft.XMLHTTP" -Objekt nicht. Mache ich etwas falsch?

Vielen Dank für Ihre Zeit.

+0

sicher, dass Ihre Header "Auth" genannt, nicht "Autorisierung"? Versuchen Sie 'xhr.SetRequestHeader" Authorization ", authToken' –

+0

Ja, es heißt" Auth "und leider ist es nicht möglich, es zu diesem Zeitpunkt zu ändern (es wurde nicht von mir erstellt und es wird bereits von mehreren Clients verwendet) :( –

Antwort

0

Versuchen Sie, den Aufruf von SetRequestHeader so zu ändern, dass er ein Zeichenfolgenliteral verwendet. Ich habe das Problem dupliziert, wenn authToken keinen Wert festgelegt hat.

Wechsel von diesem

xhr.setRequestHeader "Auth", authToken 

Zu diesem

xhr.setRequestHeader "Auth", "testdatahere" 
+0

Danke, es funktioniert tatsächlich mit der Variable, wenn * authToken * keine leere Zeichenfolge ist.Ich mag es nicht wirklich zufällige Auth-Wert zu senden, aber solange es funktioniert ... Nochmals vielen Dank, einen schönen Tag! –

Verwandte Themen