0

ここでRPGからWCFサービスを利用することについて質問し、次の応答を受け取りました。ScottKlementにプレゼンテーションと例があります:http ://www.scottklement.com/presentations/#HTTPAPI

私はSoapUIを使用してサービスをテストし、HTTAPIで使用するsoapステートメントを取得しました。このサービスは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サービスを呼び出すことに成功した人はいますか?

4

3 に答える 3

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>
于 2012-07-10T16:16:20.773 に答える
0

WCF Webサービスを利用するためにHTTPAPIを使用することにタオルを投げ込む必要がありましたが、HTTP400および500エラーを超えることはできませんでした。ロギングは役に立ちませんでした。私はついにSOAP呼び出しを正しくすることができたと思いますが、その後、特殊文字の問題につながると思われるエラーを受け取り始めました。

代わりに、私はIBMのIWSを使用することになり、それを機能させました。これらの2つのリンクは非常に役立ちました。

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

于 2012-07-18T11:34:39.417 に答える