我有以下代码:
NSString *post = @"i hope this gets there";
NSData *postData = [post dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:NO];
NSString *postLength = [NSString stringWithFormat:@"%d", [post length]];
NSURL *url = [NSURL URLWithString:@"http://www.oneoftwosites.com"];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0];
[request setHTTPMethod:@"POST"];
[request setValue:postLength forHTTPHeaderField:@"Content-Length"];
[request setHTTPBody:postData];
[NSURLConnection connectionWithRequest:request delegate:nil];
//potential response
NSData *response = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
//convert response so that it can be LOG'd
NSString *returnString = [[NSString alloc] initWithData:response encoding:NSASCIIStringEncoding];
NSLog(@"RETURN: %@", returnString);
我已经在2个不同的网站上对其进行了测试:http://www.htmlcodetutorial.com/cgi-bin/mycgi.pl和http://instagraph.me/post,将这些网址替换为http://www.oneoftwosites.com
。出于某种原因,它只适用于第一个网站(使用perl编写),而不适用于第二个(使用.php编写)。
有没有人有任何想法为什么会这样?它似乎有时只会工作似乎很愚蠢,但我真的不知道为什么它不能用于第二个网站(我没有看到代码,但我确实看到了一些示例输出)。
编辑:我添加了
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
尝试了几种不同的类型,但仍然没有运气
答案 0 :(得分:1)
Instagraph期望什么样的POST数据?机会是,它是某种结构化数据,如URL编码形式,XML或JSON。你的字符串既不是那些。因此,请提供Content-Type
,并相应地格式化您的POST数据。也许你会好运。
顺便说一句,“我希望它到达那里”这一行不构成application/x-www-form-urlencoded
类型的有效数据块。
答案 1 :(得分:0)
帖子长度应来自postData
NSString *postLength = [NSString stringWithFormat:@"%d", [postData length]];