[英]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.