Django不接受来自clien的JSON数据

2024-10-03 19:32:10 发布

您现在位置:Python中文网/ 问答频道 /正文

问题:recJSON=json.loads(请求.正文)正在引发异常。在

def addPatient(request):
    if request.method == 'POST':
        # Convert JSON to python objects and
        # store into the DB
        print request.encoding
        #body_unicode = request.body.decode('utf-8').encode('utf-16')
        #try:
        recJSON = json.loads(request.body)
        #except ValueError:
        #  print "%s",ValueError
        print "%s",request.body

        return HttpResponse(json.dumps(request.body),content_type="application/json")

例外情况:

^{pr2}$

来自客户:

使用AFNetworking并使用以下POST发送请求:

 // Create JSON data
 NSMutableDictionary* sendID = [[NSMutableDictionary alloc] init ];
 [sendID setObject:senderID forKey:@"SenderID"];

 NSMutableDictionary* sendDispName = [[NSMutableDictionary alloc] init ];
 [sendDispName setObject:displayName forKey:@"SenderDispName"];

 NSMutableDictionary* sendMessage = [[NSMutableDictionary alloc] init ];
 [sendMessage setObject:text forKey:@"Message"];

 NSMutableDictionary* sendDate = [[NSMutableDictionary alloc] init ];
 NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[sendDate setObject:[dateFormatter stringFromDate:date] forKey:@"SendDate"];


 NSMutableArray* dataToSend = [[NSMutableArray alloc] init];
 [dataToSend addObject:sendID];
 [dataToSend addObject:sendDispName];
 [dataToSend addObject:sendMessage];
 [dataToSend addObject:sendDate];

 NSData* jSenderData = [NSJSONSerialization dataWithJSONObject:dataToSend options:NSJSONWritingPrettyPrinted error:&error];

 NSLog(@"%@", [[NSString alloc] initWithData:jSenderData encoding:NSUTF8StringEncoding]);

 [_manager.requestSerializer setValue:@"TOKEN" forHTTPHeaderField:@"X-CSRFTOKEN"];
 [_manager.requestSerializer setValue:@"application/json"   forHTTPHeaderField:@"Content-Type"];


[_manager POST:@"addPatient/" parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> formdata)
 { [formdata appendPartWithHeaders:nil body:jSenderData];}
       success:^(NSURLSessionDataTask *task, id responseObject)

我读到UTF-8编码有问题json.dumps文件(请求.正文)在python3.0中已经修复了 http://bugs.python.org/issue11489

这是我面临的同样的问题吗。这是我第一个使用Django和Python的项目,所以任何额外的信息都将非常感谢。在

谢谢你


Tags: jsoninitrequestbodypostprintsendmessagealloc
1条回答
网友
1楼 · 发布于 2024-10-03 19:32:10

有两件事我做错了。在

  1. 在我的代码中,我创建了要作为字典发送的有效负载,我使用AFJSONRequestSerializer和后来的NSJSONSerialization来获取NSData(传递给请求结构)。换句话说,我试图创建JSON数据的JSON。在

     NSData* jSenderData = [NSJSONSerialization dataWithJSONObject:dataToSend options:NSJSONWritingPrettyPrinted error:&error];
    
     NSLog(@"%@", [[NSString alloc] initWithData:jSenderData encoding:NSUTF8StringEncoding]);
    
    [_manager.requestSerializer setValue:@"TOKEN" forHTTPHeaderField:@"X-CSRFTOKEN"];
    [_manager.requestSerializer setValue:@"application/json"   forHTTPHeaderField:@"Content-Type"];
    
    
    [_manager POST:@"addPatient/" parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> formdata)
    

    {[formdata appendPartWi标题:无正文:jSenderData];} 成功:^(NSURLSessionDataTask*task,id responseObject)

  2. 我要做的第二件事是使用多部分表单请求。我试图将JSON数据作为一个多部分形式的主体发送。这在服务器上没有得到正确的解释。

感谢社会各界的帮助。在

相关问题 更多 >