我整个上午都试图解决这个问题。我使用MAMP从Objective-C方法向我的Mac上的本地服务器发送POST请求。代码运行时,Objective-C方法似乎连接成功,但我的PHP脚本没有收到任何内容。我根据this answer重写了我的发送方法,因此发送应该是正确的。在没有运气的情况下,我在SO上经历了10-15个类似的问题。我现在的猜测是网址出了点问题,但我无法找到问题所在。如果有人能帮我解决这个问题,那就太好了。
这是我的代码:
IP地址:10.10.2.143
PHP脚本地址:http://localhost:8888/hello_world.php
目标C:
- (void)hasToken:(STPToken *)token
{
NSLog(@"Received token %@", token.tokenId);
NSString *post = [NSString stringWithFormat:@"stripeToken=%@", token.tokenId];
NSData *postData = [post dataUsingEncoding:NSUTF8StringEncoding];
NSString *postLength = [NSString stringWithFormat:@"%d", [postData length]];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
[request setURL:[NSURL URLWithString:@"http://10.10.2.143:8888/hello_world.php"]];
[request setHTTPMethod:@"POST"];
[request setValue:postLength forHTTPHeaderField:@"Content-Length"];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
[request setHTTPBody:postData];
NSURLConnection *conn = [[NSURLConnection alloc] initWithRequest:request delegate:self];
if (conn)
{
NSLog(@"Connection successful!");
}
else
{
NSLog(@"Connection failed...");
}
}
PHP:
<?php
echo "Hello, World!";
echo $_POST;
?>
输出:
// NSLog
2014-06-16 12:19:45.428 PayPhone Prototype[6519:60b] Received token tok_104EMf4h7nUnb2nUWKejveb9
2014-06-16 12:19:45.430 PayPhone Prototype[6519:60b] Connection successful!
// PHP
Hello, World!Array
答案 0 :(得分:1)
您似乎错过了NSURLConnection
中对start
方法的调用...只需致电
[conn start];
重新创建连接对象后。
还有一件事,你处理成功/失败案例的方式并没有多大意义,因为它只检查连接对象是否已创建(而不是连接对象):
if (conn)
{
NSLog(@"Connection successful!");
}
else
{
NSLog(@"Connection failed...");
}
您应该正确实现连接对象委托方法:
– connectionDidFinishLoading:
– connection:didReceiveData:
– connection:didFailWithError:
(正如您要链接的问题中提到的那样)。