我在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);
}];
答案 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
应转换为字符串以拼接成网址。