[英]C# HttpClient PostAsync won't work with django rest framework
在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(类似于由unity提供的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#控制台中
评论的字符串是我写的。 不是从控制台
{"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。 我用=> https://jsonplaceholder.typicode.com/posts进行了测试,并且帖子创建工作正常。
可能是Django问题,也可能是C#问题,我不知道...请帮助!
PS? HttpWebRequest也可以正常工作。
我根本不了解C#,但根据其他帖子( 对Webapi的httpclient调用以发布不起作用的数据或HttpClient没有发布表单数据 ),您可能需要在StringContent
设置更多信息:
StringContent(content, Encoding.UTF8, "application/json")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.