首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >NSURLRequest问题

NSURLRequest问题
EN

Stack Overflow用户
提问于 2011-03-21 21:43:08
回答 3查看 4.6K关注 0票数 2

嘿,

我的NSURLRequest HTTP POST出了问题,我找不到哪里出了问题。

这是我的服务器端php:

代码语言:javascript
运行
复制
<html>
<head>
</head>
<body>
    <?php 
        if (! isset($_POST['sometext'])) {
            echo "NOT SET";
        } else {
            echo $_POST['sometext'];
        }
    ?>
</body></html>

这是我用来发布数据的目标c代码:

代码语言:javascript
运行
复制
NSString *urlString = @"http://localhost:8888/postpage";
NSURL *url = [[NSURL alloc] initWithString:urlString];
NSMutableURLRequest *urlRequest=[NSMutableURLRequest requestWithURL:url];

[url release];


    [urlRequest setHTTPMethod:@"POST"];
    [urlRequest addValue: msgLength forHTTPHeaderField:@"Content-Length"];
    [urlRequest setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"content-type"];
    NSString *postString = @"sometext=Hello&language=en";
    NSString *msgLength = [NSString stringWithFormat:@"%d", [postString length]];
    [urlRequest setHTTPBody:[postString dataUsingEncoding:NSUTF8StringEncoding]];


NSString *returnString = [[NSString alloc] initWithData:[NSURLConnection sendSynchronousRequest:urlRequest returningResponse:nil error:nil] encoding:NSUTF8StringEncoding];
NSLog(@"%@",returnString);

NSLog的结果是:

代码语言:javascript
运行
复制
<html>
    <head>
    </head>
    <body>
        NOT SET 
    </body>
</html>

已经谢谢了

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-03-21 21:55:01

我有时遇到同样的问题,解决方案是将以下内容添加到请求中:

代码语言:javascript
运行
复制
[urlRequest setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"content-type"];
票数 4
EN

Stack Overflow用户

发布于 2011-03-22 00:38:36

问题的一个可能根源可能是,在代码中,您在将值分配给msgLength变量之前设置了Content-Length标头。由于nil对象上的ob Obj-C方法返回nil ( nil为0),因此您将Content-Lenght设置为0。尝试移动这条线

代码语言:javascript
运行
复制
NSString *msgLength = [NSString stringWithFormat:@"%d", [postString length]];

在此之前

代码语言:javascript
运行
复制
[urlRequest addValue: msgLength forHTTPHeaderField:@"Content-Length"];
票数 2
EN

Stack Overflow用户

发布于 2011-03-21 22:04:37

我建议你尝试一下ASIHTTPRequest Library,它不仅可以像使用ASIFormDataRequest一样简单地处理http请求,而且还易于异步处理。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5378411

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档