whi*_*adb 3 post xcode objective-c nsurlconnection
我想在Objective-C中编写一个iPhone应用程序.我需要使用NSURLConnection POST数据.我可以找到与JSON有关的每个例子; 我不需要使用JSON.我需要做的就是POST数据并从PHP脚本中获得简单的1或0(成功或失败).而已.
我遇到了这段代码,但我不知道如何使用它或修改它不使用JSON:
- (void)performRequest {
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:@"http://someplace.com/"]];
[request setValue:@"Some Value" forHTTPHeaderField:@"Some-Header"];
[request setHTTPBody:@"{\"add_json\":\"here\"}"];
[request setHTTPMethod:@"POST"];
[NSURLConnection connectionWithRequest:[request autorelease] delegate:self];
}
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {
// Fail..
}
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
// Request performed.
}
Run Code Online (Sandbox Code Playgroud)
Nic*_*ood 14
这是如何创建一个普通的帖子.
首先创建一个正确类型的请求:
NSURL *URL = [NSURL URLWithString:@"http://example.com/somepath"];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:URL];
request.HTTPMethod = @"POST";
Run Code Online (Sandbox Code Playgroud)
现在将您的帖子数据格式化为URL编码的字符串,如下所示:
NSString *params = @"param1=value1¶m2=value2&etc...";
Run Code Online (Sandbox Code Playgroud)
请记住使用百分比编码对各个参数进行编码.你不能完全依赖NSString stringByAddingPercentEscapesUsingEncoding方法(google找出原因),但这是一个好的开始.
现在我们将帖子数据添加到您的请求中:
NSData *data = [params dataUsingEncoding:NSUTF8StringEncoding];
[request addValue:@"8bit" forHTTPHeaderField:@"Content-Transfer-Encoding"];
[request addValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
[request addValue:[NSString stringWithFormat:@"%i", [data length]] forHTTPHeaderField:@"Content-Length"];
[request setHTTPBody:data];
Run Code Online (Sandbox Code Playgroud)
就是这样,现在只需使用NSURLConnection(或其他)正常发送您的请求.
要解释回复的反应,请参阅Maudicus的回答.