REST post mit Python-Anfrage

Warum funktioniert dieser einfache code-POST-Daten zu meinem service:

import requests
import json

data = {"data" : "24.3"}
data_json = json.dumps(data)
response = requests.post(url, data=data_json)
print response.text

Ist und mein Dienst ist entwickelt mit WCF so :

  [OperationContract]
  [WebInvoke(Method = "POST", UriTemplate = "/test", ResponseFormat =    
      WebMessageFormat.Json,RequestFormat=WebMessageFormat.Json)]
  string test(string data );

Hinweis: Wenn entfernen Sie die input-parameter data funktioniert alles einwandfrei, was kann das Problem sein.

Wenn Sie sagen, es funktioniert nicht, was meinst du genau? Aus dem letzten "Hinweis", es klingt wie es ist mehr als nur "ignoriert" meine Daten" (da ohne die Daten "alles funktioniert"), aber dann genau das, was geschehen?
Nun, ich denke, dass ich das Problem entdeckt. Ist es mit der {"data" : "24.3"} .. für einige Gründe, die ich mitschicken, die als string-das ist, wenn mein Antrag geht durch.. wie diese "{data : 24.3}" .. jemand darauf, zu erklären, Gründe ?
Haben Sie versucht data = {"data": 24.3} (Hinweis: ein float, kein string)? Ich weiß nicht, WCF, aber hier ist eine andere interpretation: string test(string data) könnte bedeuten, dass Ihre server erwartet einen einzelnen string als Eingabe (data_json = '"something"' (Hinweis: es ist ein Python-string mit json-text, der darstellt, json-string)), und es nicht zu erwarten, dass ein json-Objekt. Streng genommen "application/json" darstellen muss entweder ein json-Objekt (z.B. data_json = '{"a", 1}') oder einem json-array (z.B. data_json = '[1,2,3]') deshalb ist es falsch, anzunehmen, nur ein string.

InformationsquelleAutor Suave Nti | 2012-12-18

Schreibe einen Kommentar