由于数据格式不匹配,在iphone应用程序中接收500错误

2024-09-20 03:34:26 发布

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

我正在开发一个使用Django作为后端的iPhone应用程序。在Django REST框架中开发的Web服务发布结果,Django开发人员使用postman扩展来测试数据是否真的被发布了

例如,一个web服务如下

class EventCommentPost(generics.ListCreateAPIView):
    """Post a comment to particular Event"""
    # permission_classes = (permissions.IsAuthenticated,)
    model = Event_Comment
    serializer_class = EventCommentSerializer

    def post(self,request,*args,**kwargs):
        user_name = request.POST['user_name']
        comment = request.POST['comment']
        event_id = request.POST['event_id']
        UserData = User.objects.get(id = user_name)
        EventData = Event.objects.get(id = event_id)
        Comment = Event_Comment(user_name = UserData,comment =comment,event_id=EventData)
        Comment.save()
        event_comment_id = Event_Comment.objects.get(user_name = UserData,comment =comment,event_id=EventData)
        notification_data = Notification(user_id = EventData.Event_Creator,activity_type = 'Comment',source_id=event_comment_id.id)
        notification_data.save()
        serializer = EventCommentSerializer(event_comment_id)
        list = []
        list.append(serializer.data)
        return Response(list)

现在我在我的应用程序中使用该Web服务,如下所示

-(void)getDataWithBlokc:(OnComplate)block :(NSString*)strUrl data:(NSDictionary*)dictData
{
    NSLog(@"POST DATA:=====%@",dictData);
    NSString *hostURL=[NSString stringWithFormat:@"%@%@",HOST_NAME,strUrl];
    NSURL *url=[[NSURL alloc] initWithString:hostURL];
    NSData *jsonData;
    NSString *jsonString;
    if ([NSJSONSerialization isValidJSONObject:dictData])
    {
        jsonData=[NSJSONSerialization dataWithJSONObject:dictData options:0 error:nil];
        jsonString=[[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];

    }
    request = [NSMutableURLRequest requestWithURL:url];
    [request setHTTPMethod:@"POST"];
    [request setHTTPBody:jsonData];
    [request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
    [request setValue:[NSString stringWithFormat:@"%lu", (unsigned long)[jsonData length]] forHTTPHeaderField:@"Content-Length"];


    [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError)
     {
         NSDictionary *dict=[NSDictionary dictionary];
         NSInteger httpStatus = [((NSHTTPURLResponse *)response) statusCode];
         NSLog(@"httpStatus inside block:%ld",(long)httpStatus);
         if ([data length]>0 && connectionError==nil)
         {
             dict=[NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers|NSJSONReadingAllowFragments error:&connectionError];

             block(dict);
         }
         else if (connectionError)
         {
             block(dict);
         }
     }];
}

但这行我得到500个状态码,因为数据格式不匹配

dict=[NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers|NSJSONReadingAllowFragments error:&connectionError];

Tags: nameeventiddatarequestcommentpostdict