2011-08-30 76 views
1

我在Java中,這Web服務:JAVA的Web Service與SOAP客戶端目標C ---響應問題

@WebService(serviceName = "Catalogo_V1") 
public class Catalogo_V1 { 

    /** This is a sample web service operation */ 
    @WebMethod(operationName = "hello") 
    public String hello(@WebParam(name = "name") String txt) 
    { 
     return "Hello " + txt + " !"; 
    } 
} 

,這部分在Objective C(後生成WSDL2ObjC代碼):

- (IBAction)buttonPressed:(id)sender 
{ 

    Catalogo_V1PortBinding *binding = [[Catalogo_V1Svc Catalogo_V1PortBinding] initWithAddress:@"http://localhost:8080/WSServer/Catalogo_V1.wsdl"]; 
    binding.logXMLInOut = YES; // to get logging to the console. 

    Catalogo_V1Svc_hello *r = [[Catalogo_V1Svc_hello alloc] init]; 

    //NSLog(@"request: %@",r); 

    [r setName:i.text]; 
    //NSLog(@"string: %@ ",i.text); 

    Catalogo_V1PortBindingResponse *resp = [binding helloUsingParameters:(Catalogo_V1Svc_hello *)r]; 

    NSLog(@"response: %@",resp); 

    for (id mine in resp.bodyParts) 
    { 
     if ([mine isKindOfClass:[Catalogo_V1Svc_helloResponse class]]) 
     { 
      //lab.text = [mine Catalogo_V1Svc_helloResponse]; 
     } 
    } 
} 

和我的控制檯顯示此消息:

011-08-30 17:00:11.572 Catalogo-V1[3876:207] OutputHeaders: 
{ 
    "Content-Length" = 451; 
    "Content-Type" = "text/xml; charset=utf-8"; 
    Host = localhost; 
    Soapaction = ""; 
    "User-Agent" = wsdl2objc; 
} 
2011-08-30 17:00:11.572 Catalogo-V1[3876:207] OutputBody: 
<?xml version="1.0"?> 
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:Catalogo_V1Svc="http://org/" xsl:version="1.0"> 
    <soap:Body> 
    <Catalogo_V1Svc:hello> 
     <Catalogo_V1Svc:name>ddddddd</Catalogo_V1Svc:name> 
    </Catalogo_V1Svc:hello> 
    </soap:Body> 
</soap:Envelope> 
2011-08-30 17:00:11.593 Catalogo-V1[3876:207] Response HTTP: 
<NSHTTPURLResponse: 0x5b1ffd0> 
2011-08-30 17:00:11.593 Catalogo-V1[3876:207] ResponseStatus: 404 
2011-08-30 17:00:11.593 Catalogo-V1[3876:207] ResponseHeaders: 
{ 
    "Content-Length" = 1067; 
    "Content-Type" = "text/html"; 
    Date = "Tue, 30 Aug 2011 15:00:11 GMT"; 
    Server = "GlassFish Server Open Source Edition 3.1.1"; 
    "X-Powered-By" = "Servlet/3.0 JSP/2.2 (GlassFish Server Open Source Edition 3.1.1 Java/Apple Inc./1.6)"; 
} 
2011-08-30 17:00:11.617 Catalogo-V1[3876:207] ResponseError: 
Error Domain=Catalogo_V1PortBindingResponseHTTP Code=404 "not found" UserInfo=0x5b2a320 {NSLocalizedDescription=not found} 
2011-08-30 17:00:11.618 Catalogo-V1[3876:207] response: <Catalogo_V1PortBindingResponse: 0x5b25bd0> 

輸出其正確的,但我不收到任何迴應....

+0

錯誤404意味着您的客戶端沒有正確響應。 – paulsm4

+0

好的,問題出在客戶端,但是哪裏? – Davidin073

回答

1

你的服務器HTTP status 404 (File Not Found)響應,這意味着客戶端發佈的SOAP請求的端點(URL),該服務器沒有被配置爲迴應。

例如,您的客戶端可能指向http://localhost:8080/foo ,但服務器正在監聽http://localhost/bar

檢查客戶端和服務器配置上的端點URL,以確保它在同一個URL上偵聽。

+0

謝謝Maerics !!! - >>這是正確的形式「http:// localhost:8080/WSServer/Catalogo_V1」但我有最後一個「如果」其他小問題,我不知道如何提取我的參數... – Davidin073

+0

有很多可能導致錯誤的事情404:無效/丟失端口#,錯誤/不完整的URL,無效的命名空間,意外/無效字符等等等等。唯一的共同根本原因是「客戶端搞砸了」:) – paulsm4

+0

現在我沒有錯誤,但我的服務器返回響應沒有我的參數發送.....很多謝謝!當不知道什麼是如此困難解決任何問題... – Davidin073