3

我正在使用以下代码来调用http://www.highoncoding.com/Customers.asmx Web 服务。

更新 1:

现在,我有以下代码:

-(NSMutableArray *) getAll 
{   
    NSURL *baseURL = [NSURL URLWithString:@"http://highoncoding.com/Customers.asmx?op=GetAll"];    

    NSString *soapBody = @"<?xml version=\"1.0\" encoding=\"utf-8\"?><soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\"><soap:Body>    <GetAll xmlns=\"http://tempuri.org/\" /></soap:Body></soap:Envelope>";

    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:baseURL];
    [request setHTTPBody:[soapBody dataUsingEncoding:NSUTF8StringEncoding]];

    [request addValue:@"http://tempuri.org/GetAll" forHTTPHeaderField:@"SOAPAction"];

    [request addValue:@"text/xml; charset=utf-8" forHTTPHeaderField:@"Content-Type"];

    AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];

    [operation start];

但它不是返回 XML,而是返回 HTML/CSS。

更新 2:

我错过了 httpMethod 行:

[request setHTTPMethod:@"POST"];
4

1 回答 1

7

您需要设置Content-TypeSOAPAction作为标题。您的 SOAP XML 字符串必须是请求的发布正文。

我建议使用 SOAPClient、HTTPClient 或仅使用原始 curl 构建此请求,然后再使用 AFNetworking 进行随机刺伤。

将此原始请求与 AFNetworking 生成的请求进行比较,以查看使用Charles等代理的差异所在。

更新:这是一个有效的原始请求示例

HTTP 客户端手动发出 SOAP 请求

和回应:

回复

于 2012-06-26T18:07:33.143 回答