2014-01-31 57 views
1

我正在使用POST方法將一些數據發送到我的服務器。代碼如下:從服務器獲取數據時出錯

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"<myServer ip>"]]; 
[request setValue:@"application/xml; charset=utf-8" forHTTPHeaderField:@"Content-Type"]; 
[request setHTTPMethod:@"POST"]; 
NSString *stringData = @"Hello"; 
NSData *requestBodyData = [stringData dataUsingEncoding:NSUTF8StringEncoding]; 
request.HTTPBody = requestBodyData; 
NSURLConnection *conn = [[NSURLConnection alloc] initWithRequest:request delegate:self]; 
[conn start]; 

我沒有從服務器接收到正確的數據。

代碼爲接收是:

- (void)connectionDidFinishLoading:(NSURLConnection *)connection { 

    NSLog(@"didFinishLoading Called"); 
    NSString* newStr = [[NSString alloc] initWithData:responseData 
               encoding:NSUTF8StringEncoding]; 
    NSLog(@"data received is = %@",newStr); 
} 

我得到的迴應是:

<soapenv:Body> 
    <soapenv:Fault> 
     <faultcode xmlns:ns1="xml.apache.org/axis/">ns1:Client.NoSOAPAction</…; 
     <faultstring>no SOAPAction header!</faultstring> 
     <detail> 
+0

你可以發佈你所有的委託NSURLConnection的方法嗎? – Ilario

+0

另外,什麼是打印爲newStr(如果它打印的是)? – Anil

+0

@Anil炎就是我得到: NS1:Client.NoSOAPAction no SOAPAction header!

回答

2

你不能僅僅通過發送任意字符串測試SOAP服務。您所證實的是,該URL指向期望接收SOAP消息的服務器。您需要查看服務器規範並創建要發送的適當SOAP有效負載。這應該會替換您當前的內容stringData

+0

好吧,我接受你的觀點,你能告訴我上面寫到POST數據到服務器的代碼片段是正確的嗎? 我是否必須爲SOAP Action設置任何值也如下所示: [請求setValue:@「application/xml; charset = utf-8」forHTTPHeaderField:@「Content-Type」]; 其實我第一次處理server.Sorry任何幼稚的問題。 –

+0

代碼通常是正確的。您發送的標題和正文內容取決於服務器期望值。通常你需要設置Content-Type(XML或SOAP XML)和Content-Length。 – Wain

相關問題