0

我需要将 NSString 发布到我网站上的文件中。我在http://www.mysite.herokuapp.com/newFile.php创建了一个文件,需要将数据发布到 newFile.php 中。

在 iOS 中找到了这个 Send String to webserver?早些时候,我认为这是完美的,但很快意识到是从 2009/2010 年开始的,并且代码无法正常工作。在摆弄了一下之后,我得到了下面的代码,但它不起作用。

所以这有两个部分:

首先,我是否应该首先发布到 .php 文件中?.txt 会更容易吗?

二、网站端和iOS端怎么做?

这是我在 iOS 中整理的代码:

// Post data onto external server
             NSString *post = @"IsThisWorking?";
             NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];

             NSString *postLength = [NSString stringWithFormat:@"%d", [postData length]];

             NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
             [request setURL:[NSURL URLWithString:@"https://mysite.herokuapp.com/getLikes.php"]];
             [request setHTTPMethod:@"POST"];
             [request setValue:postLength forHTTPHeaderField:@"Content-Length"];
             [request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
             [request setHTTPBody:postData];
4

2 回答 2

0

你必须在你的服务器上处理这个。

接收NSString- 在您的示例中getLikes.php- 应该将字符串保存到服务器上的文件的方法。

我不熟悉 PHP,但这个链接可能会有所帮助

php - 文件写入

于 2012-11-12T07:36:19.000 回答
0

iOS端

获取 ASIHttpRequest 或 AFNetworking。

我使用 ASIHttpRequest 及其 ASIFormData 因为我发现 AFNetworking 有一些 POST 变量错误:

-(void)postDataToServer
{
    NSURl url = [NSURL urlWithString:@"http://www.myserver.com/api/submitdata"];

    __block ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
    [request setPostValue:myString forKey:@"data"];

    [request setCompletionBlock:^{
        NSLog(@"Server response = %@", [request responseString]);
    }];

    [request setFailedBlock:^{
        NSLog(@"Server error: %@", [[request error] localizedDescription];
    }];

    [request startAsynchronous];
}

PHP服务器端

我会使用像 Symfony 这样的 web 框架来构建 web 服务,但是为了快速而肮脏的解决方案,您可以执行以下操作来快速测试:

class API
{
    public function saveData()
    {
        if(isset($_REQUEST['data']))
        {
            // google some php code to write to file
        }
    }
}

// when the page loads, we call the saveData and in there
// we check if data is passed in
$api = new API();
$api->saveData();
于 2012-11-12T07:44:17.663 回答