Iphone 如何将json对象作为参数传递给webservice?

Iphone 如何将json对象作为参数传递给webservice?,iphone,objective-c,json,nsmutableurlrequest,Iphone,Objective C,Json,Nsmutableurlrequest,我正在使用一个以json对象为参数的Web服务。这是我的密码: -(void)createHttpHeaderRequest { NSString *x = @"{\"GetVehicleInventory\": {\"ApplicationArea\": {\"Sender\": {\"ComponentID\":}}}" (something like that) NSString *sample = [NSString stringWithFor

我正在使用一个以json对象为参数的Web服务。这是我的密码:

    -(void)createHttpHeaderRequest {

        NSString *x = @"{\"GetVehicleInventory\": {\"ApplicationArea\": {\"Sender\": {\"ComponentID\":}}}" (something like that)

        NSString *sample = [NSString stringWithFormat:@"https://trialservice.checkitout?XML_INPUT=%@",x];
 NSString * final = (NSString *) CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, (CFStringRef)sampleReq, NULL, CFSTR(":/?#[]@!$&'()*+,;=\""), kCFStringEncodingUTF8);
 NSMutableRequest *request = [NSMutableREquest requestWithURL:[NSURL URLWithString:final]];
    NSURLConnection * theConnection = [[NSURLConnection alloc]initWithRequest:theRequest delegate:self];
        if (theConnection) {
            NSLog(@"Service hit");
        }
    }

    - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
        NSError * error;
        NSDictionary * dict = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&error];
        NSArray * categories = [dict objectForKey:@"category"];
        [self.delegate giveControlBackToController:categories];

    }
当我尝试NSLog sample时,它会给我完整的URL,粘贴到浏览器后会返回结果,但当我在请求中调用NSLog时,它会显示null,此后不会发生任何事情。
控件永远不会转到其NSURLConnection委托方法。

诀窍在于大多数浏览器自动转义URL,而NSURL不会。你需要手动操作;看看这个函数。

这可能是一个注释而不是答案,但不幸的是,您不能在注释中格式化代码。将以下方法添加到委托中,并查看是否调用它。如果有,让我们知道反应是什么

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
    NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)response;
    NSLog(@"Connection response code: %d", httpResponse.statusCode);
}

请努力使用正确的英语并粘贴一些至少可编译的代码。您正在创建一个名为
request
的NSMUTABLE请求,但随后使用名为
theRequest
的东西初始化NSURL连接。这是否反映了您的实际代码,或者这只是您复制到此处时引入的错误?这只是在此处引入的错误。很抱歉。您是否在您的代理中实现了
连接:didReceiverResponse:
?确定。所以我尝试了这个,它现在没有给我空值,但仍然没有命中委托方法,加上url现在填充了很多%7D等。还有其他建议吗?你设置了委托吗?您是否创建了NSURLConnection?是的。NSURLConnection*连接=[[NSURLConnection alloc]initWithRequest:theRequest委托:self];请参见上面的编辑。无法显示正确的url或json参数,但就是这样。@Ashutosh那么您最终使用我建议的函数添加了转义百分比了吗?我哪儿也看不到。另外,在
connection:didReceiveData:
中,数据参数的作用与您认为的不同——数据参数是部分数据,应该使用NSMutableData实例收集。不会调用它。但是方法didFailWithError会这样做,它说NSLocalizedDescription=此服务器的证书无效。您可能正在连接假装为“209.112.58.126”的服务器,这可能会使您的机密信息处于危险之中。NSUnderlyingError=0x6877b40“此服务器的证书无效。您可能正在连接假装为“209.112.58.126”的服务器,这可能会使您的机密信息处于危险之中。”,nsurErrorFailingUrlPeerTrustErrorKey=}那么,听起来服务器配置有问题。你说它可以在浏览器中工作?