0

我设法制作了一个将数据发送到rest api服务的应用程序。内容类型必须是 text/html。但是每当我运行我的应用程序时,我都会收到 415 http 代码响应,这意味着不支持的内容类型。这是我的代码:

NSURL *url = [NSURL new];

NSData *body = nil;

NSString *contentType = @"text/html"; 

NSURL *finalURL = [NSURL URLWithString:[NSString stringWithFormat:@"http://telesto.zapto.org:81/SMART_EdgeNode/EdgeNode/DataFeeds/3/addMeasurement"]];
NSString *yourString = @"geoX#35#geoY#65";





contentType = @"application/x-www-form-urlencoded; charset=utf-8";

body = [[NSString stringWithFormat:@"%@", yourString] dataUsingEncoding:NSUTF8StringEncoding];
NSString *putLength = [NSString stringWithFormat:@"%d",[body length]];



if (nil==finalURL) {

    finalURL = url;
}


NSMutableDictionary* headers = [[[NSMutableDictionary alloc] init] autorelease];
[headers setValue:contentType forKey:@"Content-Type"];
[headers setValue:@"mimeType" forKey:@"Accept"];
[headers setValue:@"no-cache" forKey:@"Cache-Control"];
[headers setValue:@"no-cache" forKey:@"Pragma"];
[headers setValue:@"close" forKey:@"Connection"];






NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:finalURL
                                                       cachePolicy:NSURLRequestUseProtocolCachePolicy
                                                   timeoutInterval:60.0];
[request setHTTPMethod:@"PUT"];

[request setAllHTTPHeaderFields:headers];


[request setHTTPBody:body];
[request setValue:putLength forHTTPHeaderField:@"Content-Length"];

self.conn = [NSURLConnection connectionWithRequest:request delegate:self];

我猜 atm 定义 content-type 有问题。有什么帮助吗??

提前致谢

4

2 回答 2

1

好的,我终于找到了。正是这条特定的行导致了问题,并且不得不对 content-type 做一些事情:

contentType = @"application/x-www-form-urlencoded; charset=utf-8";

删除后,我能够正确地将我的字符串发送到服务器。

于 2012-10-05T17:44:32.357 回答
0

我认为服务器抱怨它不知道如何生成内容类型为“mimeType”的响应。

您的 Accept 标头应该是“text/html”或您在响应中期望的任何内容类型,而不是“mimeType”。


更新

再次阅读后,我注意到您将 contentType 设置为@"text/html",然后设置为@"application/x-www-form-urlencoded; charset=utf-8"。你需要哪个?根据描述,您想发送text/html,但这不是您发送的内容。当您设置contentType为 时@"application/x-www-form-urlencoded; charset=utf-8"text/html会丢失。

于 2012-09-29T22:37:53.643 回答