1

我有一个 WCF 网络服务。如果我只是将 URL 放入浏览器,我会收到错误消息:Forbidden。但如果我通过 Fetcher(OS X 中的 HTTP 模拟器)发布数据,我可以获得正确的返回值。

现在,我尝试使用 NSURLConnection 将数据发布到 Web 服务并获取返回值。

    NSMutableURLRequest * request = [NSMutableURLRequest requestWithURL:postURL];
    [request setHTTPMethod:@"POST"];
    [request setValue:[NSString stringWithFormat:@"%d", postData.length] forHTTPHeaderField:@"Content-Length"];
    [request setValue:@"application/x-www-form-urlencoded; charset=utf-8" forHTTPHeaderField:@"Content-Type"];
    [request setHTTPBody:postData];

    NSURLResponse * response = nil;
    NSError * error = [[NSError alloc] init];

    receivedData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];

    NSString * receivedStr = [[NSString alloc] initWithData:receivedData encoding:NSUTF8StringEncoding];

但我得到的只是我可以从浏览器中看到的错误页面的 html 代码(禁止消息)。

请帮我弄清楚。提前致谢。

编辑:我设置了一个 PHP 服务器并尝试做同样的事情。我工作完美。因此,我高度怀疑这是 WCF 问题。有人有什么好主意吗?

4

1 回答 1

0

如果您使用生成的 .svc 服务,您需要:

改变

[请求 setValue:@"application/x-www-form-urlencoded; charset=utf-8" forHTTPHeaderField:@"Content-Type"];

[请求 addValue:@"text/xml; charset=utf-8" forHTTPHeaderField:@"Content-type"];

您还需要根据您请求的操作来 SOAPAction 字段

你是什​​么postData?

于 2014-01-23T12:21:38.910 回答