6

私の目的は、指定された wsdl URL を使用して Soap UI プロジェクトを作成し、それを保存して、すべて Java メソッドを介してリクエストを送信することです。org.apache.http.client.ClientProtocolException..... Caused by: org.apache.http.ProtocolException: Content-Length header already present操作のユーザー名とパスワードを設定してリクエストを送信しようとすると、エラーが発生します。リクエストを送信する Java メソッドを見つけます。

public void runSoap() throws Exception
{
        String projectFile = "SoapUIProjects/TestProjectA-soapui-project.xml";
    SoapUI.setSoapUICore(new StandaloneSoapUICore(true));
    WsdlProject project = new WsdlProject(projectFile);

    int c = project.getInterfaceCount();
    System.out.println("The interface count   ="+c);

    for(int i=0;i<c;i++)
    {
        WsdlInterface wsdl = (WsdlInterface) project.getInterfaceAt(i);
        String soapVersion = wsdl.getSoapVersion().toString();
        int opc = wsdl.getOperationCount();
        String result="";

        for(int j=0;j<opc;j++)
        {
            WsdlOperation op = wsdl.getOperationAt(j);
                String opName = op.getName();
                System.out.println("OPERATION:"+opName);

                WsdlRequest req = op.getRequestByName("Req_"+soapVersion+"_"+opName);

                //Assigning correct u/p to an operation: Generate
                if(opName.equals("Generate"))
                {
                    System.out.println("The operation is Generate.");
                    req.setUsername("u1");//Setting username
                    req.setPassword("u1");//Setting password
               }

               WsdlSubmitContext wsdlSubmitContext = new WsdlSubmitContext(req);
               WsdlSubmit<?> submit = (WsdlSubmit<?>) req.submit(wsdlSubmitContext, false);
               Response response = submit.getResponse();
               result = response.getContentAsString();
               System.out.println("The result ="+result);
        }
    }
}

SoapUI ウィンドウ

添付画像も参考にしてください。どこが間違っているのか、この問題を解決する方法を教えてもらえますか?

4

3 に答える 3

13

私は私の質問に対する答えを得ました。「認証タイプ」を明示的かつプログラム的に設定する必要がありました。そのためのコードは次のとおりです- req.setAuthType("Preemptive");

これを指定すると、リクエストが送信され、例外は発生しません。

于 2013-06-12T13:36:56.047 に答える
4

この同じエラーを修正するための私の検索では、解決策は「プリエンプティブに認証する」オプションを有効にすることであることがわかりました(設定-> http設定に移動し、「プリエンプティブに認証する」ボックスをチェックしてください。)

于 2014-04-03T17:57:05.593 に答える