簡體   English   中英

來自iOS的Django HTTP發布請求

[英]Django HTTP Post Request from iOS

我正在使用Django REST框架。

@api_view(['POST'])
def image_params(request, format=None):
    if request.method == 'POST':
        print request.DATA
        size = request.POST.get('size')
        colour = request.POST.get('colour')
        get_clothes = Clothes.objects.filter( Q(clothescolour=colour) | Q(clothessize=size))
        serializer = ClothesSerializer(get_clothes, many=True)
        result = serializer.data
        print result
    return Response(result,status=status.HTTP_201_CREATED)

我正在使用POSTMAN客戶端發送POST請求,在form-datakeycolourvalue red 它運行完美,我得到了預期的結果。 這是print request.DATA 。DATA如下所示:

<QueryDict: {u'colour': [u'red']}>

當我從iOS發送實際請求時, print request.DATA如圖所示,並且過濾查詢失敗。

{u'colour': u'red'}

這是我在iOS中構造HTTP Post Request的方法:

NSDictionary* requestData = [NSDictionary dictionaryWithObjectsAndKeys:
                             @"red",
                             @"colour",
                             nil];

NSError *postError;
NSData *postData = [NSJSONSerialization dataWithJSONObject:requestData options:NSJSONWritingPrettyPrinted error:&postError];
[postRequest setHTTPMethod:@"POST"];
[postRequest setHTTPBody:postData];
[postRequest setValue:@"application/json;charset=utf-8" forHTTPHeaderField:@"Content-Type"];

我該怎么做才能使這項工作?

使用POSTMAN,您將發送表單數據;使用iOS,您將發送json數據。 這就是為什么它被不同地解析的原因。 您需要在POSTMAN上設置Content-Type: application/json標頭並發送原始數據:

{“顏色”:“黑色”}

這樣,您將在兩者上獲得相同的dict格式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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