簡體   English   中英

C#HttpClient PostAsync無法與Django Rest框架一起使用

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM