如何使用JSONHTTPClient对我的api进行POST调用?

时间:2017-04-28 18:54:57

标签: ios objective-c json post jsonhttpclient

我在Objective c应用程序中使用github的JSONHTTPClient库。我有很多调用我的api和所有的工作,但当我尝试添加一个带有标题和正文的POST函数时,我收到一个错误:

  

错误Domain = JSONModelErrorDomain Code = 2"网络响应错误。   可能JSON URL无法访问。"   UserInfo = {NSLocalizedDescription =错误的网络响应。可能是   JSON URL无法访问。}

我使用JSONFromURLWithString网址进行POST调用。 api调用正常工作,从服务器返回数据(我从邮递员那里测试了这个)但是从我的目标c应用程序中的这个函数我总是得到错误,为什么不得到响应?

我是否发送了格式错误的数据?

这是我的代码:

NSDictionary *parameters = [NSDictionary dictionaryWithObjectsAndKeys:@"var1", @"keyVar1", @"5" , @"keyvar2",  nil];//Here initialize my headers values into a dictionary

NSDictionary *dicty = [NSDictionary dictionaryWithObjectsAndKeys:@"6234", @"id", @"4324" , @"id2", nil];//This is my body
NSData *jsonDatass = [NSJSONSerialization dataWithJSONObject:dicty options:0 error:nil];//Here convert my body to nsdata

[JSONHTTPClient JSONFromURLWithString:@"myURL" method:@"POST" params:nil orBodyData:jsonData headers:parameters completion:^(id json, JSONModelError *err){

        NSLog(@"have error?: %@", err);
        NSLog(@"have response?: %@", json);

    }];

1 个答案:

答案 0 :(得分:0)

我认为首先在url中传递json,你需要将json转换为字符串,然后传递string作为参数。这就是邮递员为什么运作良好的原因 在

中加入后,我想知道完整的网址
  [JSONHTTPClient JSONFromURLWithString:@"myURL" method:@"POST" params:nil 
 orBodyData:jsonData headers:parameters completion:^(id json, JSONModelError *err){
  } 


方法,您的完整网址应与

相同

******************************** divider ***********************************

NSString *myString = [[NSString alloc] initWithData:jsonDatass encoding:NSUTF8StringEncoding];
myString = [myString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSString *uploadUrl = [NSString stringWithFormat:@"<YOU host URL>"?data=%@",myString];

同样parameters应转换为字符串以拼接成网址。