如何在PHP中回复来自iPhone应用程序的帖子?
我使用目标C代码创建NSUrlConnection,如下所示:如何在PHP中回复来自iPhone应用程序的帖子?,php,iphone,http,Php,Iphone,Http,我使用目标C代码创建NSUrlConnection,如下所示: //prepar request NSString *urlString = [NSString stringWithFormat:@"http://ctruman.info/post.php"]; NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease]; [request setURL:[NSURL UR
//prepar request
NSString *urlString = [NSString stringWithFormat:@"http://ctruman.info/post.php"];
NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease];
[request setURL:[NSURL URLWithString:urlString]];
[request setHTTPMethod:@"POST"];
//set headers
NSString *contentType = [NSString stringWithFormat:@"text/xml"];
[request addValue:contentType forHTTPHeaderField: @"Content-Type"];
//create the body
NSString *formData = [[NSString alloc] initWithFormat:@"%@ %@", username.text, password.text];
NSData *postData = [[NSString stringWithString:formData] dataUsingEncoding:NSUTF8StringEncoding];
//post
[request setHTTPBody:postData];
//get response
NSHTTPURLResponse* urlResponse = nil;
NSError *error = [[NSError alloc] init];
NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&urlResponse error:&error];
NSString *result = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
NSLog(@"Response Code: %d", [urlResponse statusCode]);
if ([urlResponse statusCode] >= 200 && [urlResponse statusCode] < 300) {
NSLog(@"Response: %@", result);
}
//准备请求
NSString*urlString=[NSString stringWithFormat:@]http://ctruman.info/post.php"];
NSMutableURLRequest*请求=[[[NSMutableURLRequest alloc]init]autorelease];
[请求设置URL:[NSURL URLWithString:urlString]];
[请求设置HttpMethod:@“POST”];
//设置标题
NSString*contentType=[NSString stringWithFormat:@“text/xml”];
[请求addValue:contentType for HttpHeaderField:@“内容类型”];
//创造身体
NSString*formData=[[NSString alloc]initWithFormat:@“%@%@”,username.text,password.text];
NSData*postData=[[NSString stringWithString:formData]数据使用编码:NSUTF8StringEncoding];
//职位
[请求setHTTPBody:postData];
//得到回应
NSHTTPURLResponse*urlResponse=nil;
NSError*error=[[NSError alloc]init];
NSData*responseData=[NSURLConnection sendSynchronousRequest:request ReturnInResponse:&urlResponse错误:&error];
NSString*result=[[NSString alloc]initWithData:responseData编码:NSUTF8StringEncoding];
NSLog(@“响应代码:%d”,[urlResponse statusCode]);
如果([urlResponse statusCode]>=200&&[urlResponse statusCode]<300){
NSLog(@“响应:%@”,结果);
}
然后,我有一个php脚本,用来读取发送的POST变量:
<?php
print('<pre>');
print_r($_POST);
print('</pre>');
?>
当我执行此操作时,NSLog会显示以下内容:
NSString *name = @"Anne"; // encode this
NSString *pass = @"p4ssw0rd"; // encode this
NSString *requestString = [NSString stringWithFormat:@"&name=%@&pass=%@",name,pass];
NSData *requestData = [NSData dataWithBytes: [requestString UTF8String] length: [requestString length]];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL: [NSURL URLWithString: @"http://localhost/post.php"]];
[request setHTTPMethod: @"POST"];
[request setHTTPBody: requestData];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"content-type"];
NSData *returnData = [NSURLConnection sendSynchronousRequest: request returningResponse: nil error: nil];
NSString *resultString = [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding];
NSLog(@"%@",resultString);
排列
(
)
为什么不打印我的post变量?我是否发出了错误的POST请求?在我看来,PHP试图读取您提交的POST,就好像它是一个格式正确的PHP POST负载一样。相反,您将内容类型设置为XML内容——这可能会混淆PHP。它寻找编码的变量,并找到XML 您有两种选择:
在我看来,PHP正在试图阅读您提交的帖子,就好像它是一个格式正确的PHP帖子负载一样。相反,您将内容类型设置为XML内容——这可能会混淆PHP。它寻找编码的变量,并找到XML 您有两种选择:
以下代码工作正常 目标-C
<?php
print_r($_POST);
?>
PHP
Array
(
[name] => Anne
[pass] => p4ssw0rd
)
备选方案
签出辅助请求:以下代码工作正常 目标-C
<?php
print_r($_POST);
?>
PHP
Array
(
[name] => Anne
[pass] => p4ssw0rd
)
备选方案
签出辅助请求:这非常有效,谢谢!错误在于我的内容类型,并将请求字符串设置为UTF8String。这非常有效,谢谢!该错误与我的内容类型有关,并使请求字符串成为UTF8String。