我有以下API - 文档似乎是用Python编写的:
request = {
"username": "johndoe47",
"password": "secret12345"
}
apiConnection.request("POST", "/api/session?sid=" + sid, json.dumps(request))
response = json.loads(apiConnection.getresponse().read())
我需要通过C#
访问此REST服务我有点不确定,“json.dumps”的作用。我尝试了以下方法:
data="{\"Username\":\"johndoe47\",\"password\":\"secret12345\"}";
HttpWebRequest request=HttpWebRequest.Create("http://example.com/api/session?sid=workingsid");
request.Method = "POST";
request.ContentType = "text/plain;charset=utf-8";
System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding();
byte[] bytes = encoding.GetBytes(data);
request.ContentLength = bytes.Length;
using (Stream requestStream = request.GetRequestStream())
{
requestStream.Write(bytes, 0, bytes.Length);
}
request.BeginGetResponse((x) =>
{
using (HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(x))
{
StreamReader reader = new StreamReader(response.GetResponseStream());
retval = reader.ReadToEnd();
}
}, null);
我希望json.dumps()所做的与我用“data =”做的不一样,因为服务器响应是“缺少用户名”
答案 0 :(得分:0)
在python中,json.dump(s)(..)将给定的Python数据结构序列化为JSON。 API提供两个不同的调用,第一个是平面json.dump(..)。这个将序列化过程的输出写入像object这样的文件。另一个是json.dumps(..)将序列化数据结构作为字符串返回。因此,在上面的示例中,请求的内容是表示JSON序列化Python字典的字符串。