2013-04-01 45 views
1

我试图从我的iOS应用程序发送一个请求到服务器。Objective C HTTP应用程序和服务器之间的请求参数丢失

curl -d "uid=1&type=robbery&x=41.66505&y=-93.73046" http://thawing-ravine-5632.herokuapp.com/sos 

而这里所提出请求的Objective-C代码:使用curl时,要求工作

NSMutableURLRequest *request = [[NSMutableURLRequest alloc] 
            initWithURL:[NSURL 
               URLWithString:@"http://thawing-ravine-5632.herokuapp.com/sos"]]; 

    [request setHTTPMethod:@"POST"]; 
    [request setValue:x 
    forHTTPHeaderField:@"x"]; 
    [request setValue:y 
    forHTTPHeaderField:@"y"]; 
    [request setValue:type 
    forHTTPHeaderField:@"type"]; 
    [request setValue:uid 
    forHTTPHeaderField:@"uid"]; 

    NSURLConnection * postOutput =[[NSURLConnection alloc] 
    initWithRequest:request 
    delegate:self]; 

最后,didReceiveData记录以下:

2013-03-31 20:29:32.248 THST Mobile[14720:11c03] connectionDidReceiveData {"student_found":0,"school_found":0,"officer_found":0,"text_sent":0,"uid":0,"x":0.0,"y":0.0,"type":null} 

但记录请求之前的变量显示它们确实在提出请求之前在应用程序中实例化。在接收到请求时,SSH服务器显示它们都只是零字符串或空字符串。所以我的Objective-C代码发出post请求有什么问题 - 可能是我设置参数的方式?

回答

9

您将值设置为标题,而不是请求的正文。

NSString *params = @"x=1&y=bla&z=foo"; 
[request setHTTPMethod:@"POST"]; 
[request setHTTPBody:[params dataUsingEncoding:NSUTF8StringEncoding]]; 
相关问题