エラー:
エラー 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 メソッドは、これが間違っていることを除いてすべて機能しています。