2012-07-09 91 views
0

SOAP聲明我問了一下這裏消費從RPG一個WCF服務,並接受這樣的響應:斯科特·克萊門特有一個演示和實例:http://www.scottklement.com/presentations/#HTTPAPI爲WCF服務

我使用了SoapUI來測試我的服務,也可以讓他的肥皂聲明與HTTAPI一起使用。該服務在SoapUI中返回數據,但我在RPG程序中使用它卻不成功。了SoapUI返回以下,但似乎只是中了SoapUI工作 - 這還沒有包括的路徑,我的服務,這是

http://ServerName/COE/CustByNameList.svc 

如果我瀏覽到http://ServerName/COE/CustByNameList.svc?wdsl,我得到的WSDL。在返回了SoapUI

聲明:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/"> 
    <soapenv:Header/> 
    <soapenv:Body> 
     <tem:GetCustomerData> 
     <!--Optional:--> 
     <tem:CustomerNumber>1688</tem:CustomerNumber> 
     </tem:GetCustomerData> 
    </soapenv:Body> 
</soapenv:Envelope> 

結果看起來是這樣的:

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Body><GetCustomerDataResponse xmlns="http://tempuri.org/"><GetCustomerDataResult xmlns:a="http://schemas.datacontract.org/2004/07/" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"><a:List xmlns:b="http://schemas.datacontract.org/2004/07/WebOrderEntry.Lists"><b:PartialCSTMS><b:ADR19A>3910 LAKEFIELD DR    </b:ADR19A><b:ADR29A>JOHNS CREEK FACILITY   </b:ADR29A><b:CITY9A>SUWANEE     </b:CITY9A><b:CST_x0023_9A>1688</b:CST_x0023_9A><b:NAME9A>JOHNSON CONTROLS    </b:NAME9A><b:PHON9A>770-495-9950  </b:PHON9A><b:STAT9A>GA</b:STAT9A><b:ZIPC9A>30024  </b:ZIPC9A></b:PartialCSTMS></a:List></GetCustomerDataResult></GetCustomerDataResponse></s:Body></s:Envelope> 

我不斷收到500內部服務器錯誤。我已經嘗試了許多基於我所看到的例子的SOAP語句的變體,但他們的歷史可以追溯到2008年。有沒有人從RPG調用WCF服務獲得成功?

+0

另一個來源要問你的問題是[WEB400(http://lists.midrange.com/listinfo/web400)郵件列表。他們中的許多人一直都在處理這個問題。還有[HTTPAPI郵件列表](http://www.scottklement.com/ftpapi/ftpapilist.html),他們再次使用此API來實現此目的。注意:我是midrange.com上的另一個列表的主持人,我通過專業渠道瞭解Scott Klement .. – 2012-07-11 16:11:06

+0

我一直通過他的論壇與斯科特通話 - 我認爲他對我的i系列知識水平有點挫敗感。我會檢查你提供的其他鏈接。 – Brian 2012-07-11 16:54:33

回答

0

我不得不把毛巾在使用HTTPAPI消耗我的WCF的Web服務 - 只是不能讓過去的HTTP 400和500錯誤。日誌記錄沒有幫助。我相信我終於設法使SOAP調用正確,但是後來開始接受似乎轉化爲特殊字符問題的錯誤。

取而代之,我最終使用IBM的IWS並使其工作。這兩個環節是有很大的幫助:

http://www.ibm.com/developerworks/ibmi/library/i-amrawsdl2rpg/index.html

http://www.iprodeveloper.com/article/rpg-programming/consume-web-services-with-ibms-iws-66209

0

我問我的Twitter網絡,並@alexeivbaranov迴應如下:

嘗試比較請求從了SoapUI &響應,並使用您的TCPMON RPG客戶端。據我瞭解你的SoapUI req工作正常,但RPG請求得到500,所以請求中的問題。比較它們。

+0

我似乎無法弄清楚如何在有人回覆時得到通知 - 無論如何,在soap stmt的多個變量中,現在出現錯誤「由於EndpointDispatcher中的AddressFilter不匹配而無法在接收器處理。檢查發件人和收件人的EndpointAddresses是否同意「仍在研究 - 已經發現很多信息,但不知道如何解決我的情況 – Brian 2012-07-11 15:02:04

+0

不確定如何使用TcpMon - 爲服務器接收到的http錯誤代碼添加錯誤跟蹤這有助於 – Brian 2012-07-11 15:03:59

0

檢查您的標題。您可能會錯過肥皂行動。下面是一個使用WsHttp綁定啓用安全性的WCF服務請求示例。 wsa:行動是你可能需要的。

<?xml version="1.0" encoding="ISO-8859-1" ?> 
<soapenv:Envelope 
    xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope" 
    xmlns:ns="http://somenamespace"> 
    <soapenv:Header xmlns:wsa="http://www.w3.org/2005/08/addressing"> 
     <wsa:Action>http://someuri/Get</wsa:Action> 
     <wsa:To>http://localhost/someapp/SomeService.svc</wsa:To> 
    </soapenv:Header> 
    <soapenv:Body> 
     <ns:GetRequest> 
      <ns:Body> 
       <ns:Id>12345</ns:Id> 
      </ns:Body> 
     </ns:GetRequest> 
    </soapenv:Body> 
</soapenv:Envelope> 
+0

謝謝 - 我還沒有看到wsa:我遇到過的任何示例中的操作 - 尚未嘗試,但更接近 - 請參閱上面的註釋。 – Brian 2012-07-11 15:00:48