在Django(DRF)
在test.views.py
中class TestAPIView(APIView):
permission_classes = (AllowAny,)
def post(self, request, format=None):
print(request.data)
return Response(request.data)
在test.urls.py
中from django.conf.urls import url
from .views import TestAPIView
urlpatterns = [
url(r'^test/$', view=TestAPIView.as_view()),
]
如您所见,我的测试网址应该返回发布数据。 它在可浏览的api和Unity WWW中运行良好(类似于httpclient统一提供的内容)。
但它不适用于HttpClient PostAsync(或SendAsync)
这是我的C#代码
在Xamarin / C#中
Post newPost = new Post { Title = "asdfasfa", Content = "asdfasffasf" };
var content = JsonConvert.SerializeObject(newPost);
Debug.WriteLine(content);
var response = await _client.PostAsync("http://127.0.0.1:8000/test/", new StringContent(content));
var responseString = await response.Content.ReadAsStringAsync();
Debug.WriteLine(responseString);
和控制台的结果......
在C#Console中
评论的字符串是我写的。不是从控制台
{"Id":0,"Title":"asdfasfa","Content":"asdfasffasf"} // <- this is the sent data.
Thread started: #6
Thread started: #16
Thread started: #17
{} // <- and the received data
和...
Django(DRF)控制台中的
[26/Feb/2017 13:37:34] "POST /test/ HTTP/1.1" 200 2
<QueryDict: {}>
我的帖子数据去了哪里?
django收到<QueryDict: {}>
这只适用于httpclient。也许只有django。 我用=&gt;测试了它https://jsonplaceholder.typicode.com/posts 并且帖子创作工作得很好。
这可能是一个Django问题,可能是C#问题,我不知道...... 请帮助!
PS? HttpWebRequest也可以正常工作。
答案 0 :(得分:0)
我根本不了解C#,但根据其他帖子(httpclient call to webapi to post data not working或HttpClient is not posting form data),您可能需要在StringContent
中设置更多信息:
StringContent(content, Encoding.UTF8, "application/json")