0

エラー:

エラー Domain=NSCocoaErrorDomain Code=3840 「JSON テキストが配列またはオブジェクトで始まっておらず、フラグメントを許可するオプションが設定されていません。」UserInfo={NSDebugDescription=JSON テキストが配列またはオブジェクトで始まっておらず、フラグメントを許可するオプションが設定されていません。}

これは私の予想されるjson応答です:

{
"success": true
"mobile": 90xxxxxxxx
"message": "OTP is generated and sent successfully"
}

これは私のコードです:

NSMutableURLRequest *request=[[NSMutableURLRequest alloc]init];
    [request setURL:url];
        [request setHTTPMethod:@"POST"];
        NSString *conLength=[NSString stringWithFormat:@"%lu",(unsigned long)data.length];
        [request setValue:conLength forHTTPHeaderField:@"Content-Length"];
        [request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
        [request setHTTPBody:data];

     NSURLSession *session = [NSURLSession sharedSession];
            NSURLSessionDataTask *task = [session dataTaskWithRequest:request
                                                    completionHandler:
                                          ^(NSData *data, NSURLResponse *response, NSError *connectionError) {
                                              // ...
                                              NSLog(@"coming inside session side");
                                              dispatch_async(dispatch_get_main_queue(),^{

                                                  if([data length]>0 && connectionError==nil)
                                                  {
                                                      NSError *error;


                                                      NSMutableDictionary *jsonResponse=[NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:&error];

                                                      if(error)
                                                      {
                                                          [Utitlity alertFunction:@"Warning" message:[error localizedDescription]];
                                                          NSLog(@"%@",error);
                                                      }
                                                      else
                                                      {
                                                          [self requestComplete:jsonResponse];
                                                      }
                                                  }
                                                  else if ([data length] == 0 && connectionError == nil)
                                                  {
                                                      [Utitlity alertFunction:@"Warning" message:@"Empty Server Response"];
                                                  }
                                                  else if (connectionError != nil)
                                                  {
                                                      [Utitlity alertFunction:@"Warning" message:@"Problem in connecting to server"];
                                                  }
                                              });
                                          }];

            [task resume];

post メソッドの文字列を nsdata に変換する:

-(void)loginotpmobilnumber:(NSString *)mobile
{

    NSString *url=[NSString stringWithFormat:@"mobile=%@",mobile];
    NSData *dataFetch=[url dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES];
    NSURL *urla=[NSURL URLWithString:[NSString stringWithFormat:@"%@",loginotp]];
    [self requestFunction:urla :dataFetch :YES];
}

私の他の post メソッドと get メソッドは、これが間違っていることを除いてすべて機能しています。

4

0 に答える 0