从iOS模拟器向本地主机发送发布请求

时间:2014-06-16 07:04:41

标签: php ios objective-c post

我整个上午都试图解决这个问题。我使用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

1 个答案:

答案 0 :(得分:1)

您似乎错过了NSURLConnection中对start方法的调用...只需致电

[conn start];

重新创建连接对象后。

还有一件事,你处理成功/失败案例的方式并没有多大意义,因为它只检查连接对象是否已创建(而不是连接对象):

if (conn)
{
    NSLog(@"Connection successful!");
}
else
{
    NSLog(@"Connection failed...");
}

您应该正确实现连接对象委托方法: – connectionDidFinishLoading:     – connection:didReceiveData:     – connection:didFailWithError:(正如您要链接的问题中提到的那样)。