0

Eclipse 用の BlackBerry Java プラグインを使用して、リクエスト xml を文字列で渡すことにより、SOAP レスポンス xml を使用しようとしています。私はそれを解決する方法を探して、過去2日間これに襲われました.

以下にサンプルコードを添付しました。

public String CheckXml()
{
     final String requestXml="<SOAP:Envelope xmlns:SOAP=\"http://schemas.xmlsoap.org/soap/envelope/\"><header xmlns=\"http://schemas.cordys.com/General/1.0/\"></header><SOAP:Body><authenticateAgainstOID xmlns=\"http://schemas.cordys.com/OIDAuthentication\"><stringParam>HEMANTS_MUM013</stringParam><stringParam1>TATA2012</stringParam1></authenticateAgainstOID></SOAP:Body></SOAP:Envelope>";

     final String HOST_ADDRESS = "http://xyz.com/cordys/com.eibus.web.soap.Gateway.wcp?organization=o=B2C,cn=cordys,cn=cbop,o=tatamotors.com&SAMLart=MDFn+8e5dRDaRMRIwMY7nI84eEccbx+lIiV0VhsOQ7u+SKG6n5+WNB58"; 
     String result="";
     try {
         HttpConnection url=(HttpConnection)Connector.open(HOST_ADDRESS);
         url.setRequestProperty("Content-Type", "text/xml");
         url.setRequestMethod(HttpConnection.GET);
         OutputStreamWriter writer=new OutputStreamWriter(url.openOutputStream());

         writer.write(requestXml);
         writer.flush();
         writer.close();
         StringBuffer buffer1=new StringBuffer();

         InputStreamReader reader=new InputStreamReader(url.openInputStream());
         StringBuffer buffer=new StringBuffer();
         char[] cbuf=new char[2048];
         int num;

         while (-1 != (num = reader.read(cbuf))) {
            buffer.append(cbuf, 0, num);
         }

         String result1 = buffer.toString();
    } catch (Exception e) {
        System.out.println(e);
    }
    return result;
}
4

2 に答える 2

0

リクエストにSoapActionヘッダーが含まれていないことに気づきました。

通常、SOAP Webサービスには固定URLがあり、SoapActionヘッダーを使用してさまざまなメソッドが選択されます。ブラウザでWSDLを開き、呼び出すメソッドの形式を調べることで、ヘッダーを確認できます。

選択するアクションがわかったら、それを通常のhttpヘッダーとして設定します。

url.setRequestProperty("SOAPAction", <your action here>);

コードのもう1つの問題の原因はHttpConnection、トランスポートタイプ(MDS、BIS、Wi-Fiなど)に応じてURLにサフィックスを追加する必要がある古いクラスを使用していることです。OS 4.5以下を対象としている場合を除き、このレガシークラスを使用する必要はありません。ですから、ConnectionFactoryはるかに使いやすいクラスを見てください。OS5.0以降で利用可能です。

于 2012-09-05T16:28:36.180 に答える
0

あなたが求めていない主な問題だと思いますhttp. getResponseCode()。BB は、あなたが呼び出すまで何の相互作用もしないと思います。

実際のデバイスでは、このコードにも注意が必要です。BlackBerry で正しい開始接続を検索します。

于 2012-09-05T06:57:32.817 に答える