簡體   English   中英

獲取401錯誤在發出肥皂請求時未經授權

[英]Getting 401 error Unauthorized while making soap request

最近我收到了一位客戶的要求。 他們提供了一個WSDL來調用他們的服務。 他們正在進行IP白名單以進行身份​​驗證。 我給了我的服務器公共IP,它被列入白名單。 首先,我通過SOAP UI工具測試了該服務,並且它沒有任何問題。 然后我通過JAVA代碼集成,它失敗了。 我得到一個例外

無法將viaPost發送到網址[ https://apps.greystar.com/gsWebService/gsExtract.asmx] org.apache.axis2.AxisFault:傳輸錯誤:401錯誤:未經授權在 org.apache.axis2.transport.http.impl。 httpclient3.HTTPSenderImpl.handleResponse(HTTPSenderImpl.java:343)〜[axis2-transport-http-1.7.1.jar:1.7.1] at org.apache.axis2.transport.http.impl.httpclient3.HTTPSenderImpl.sendViaPost(HTTPSenderImpl .java:213)〜[axis2-transport-http-1.7.1.jar:1.7.1] atg.apache.axis2.transport.http.HTTPSender.send(HTTPSender.java:121)[ axis2-transport-http -1.7.1.jar:1.7.1]在org.apache.axis2.transport.http.CommonsHTTPTransportSender.writeMessageWithCommons(CommonsHTTPTransportSender.java:403)[axis2-transport-http-1.7.1.jar:1.7.1] at at org.apache.axis2.transport.http.CommonsHTTPTransportSender.invoke(CommonsHTTPTransportSender.java:234)[axis2-transport-http-1.7.1.jar:1.7.1] org.apache.axis2.engine.AxisEngine.send( AxisEngine.java:431)[axis2-kernel-1.7.1.jar:1.7.1] org.apache.axis2.description.OutInAxisO perationClient.send(OutInAxisOperation.java:399)[axis2-kernel-1.7.1.jar:1.7.1] atg.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:225)[ axis2-kernel-1.7 .jar:1.7.1]在com.reputation.r4e的org.apache.axis2.client.OperationClient.execute(OperationClient.java:150)[axis2-kernel-1.7.1.jar:1.7.1]。 integrator.greystar.ExtractDataStub.greystarExtract(ExtractDataStub.java:300)[classes /:na] at com.reputation.r4e.integrator.recordreader.GreystarLocationImportRecordReader.getGreystarExtractResponse(GreystarLocationImportRecordReader.java:198)[classes /:na] at com。 Reputation.r4e.integrator.recordreader.GreystarLocationImportRecordReader.process(GreystarLocationImportRecordReader.java:97)[classes /:na] at com.reputation.r4e.integrator.impl.DefaultPipeline.flow(DefaultPipeline.java:33)[classes /:na ] com.reputation.r4e.integrator.impl.DefaultPipeline.process(DefaultPipeline.java:52)[classes /:na] at com.reputation.r4e.integrator.importer.NullImporter.p rocess(NullImporter.java:38)[classes /:na] at com.reputation.r4e.integrator.impl.DefaultPipeline.flow(DefaultPipeline.java:33)[classes /:na] at com.reputation.r4e.integrator。 impl.DefaultPipeline.process(DefaultPipeline.java:52)[classes /:na] at com.reputation.r4e.integrator.IntegrationRunner $ IntegrationRunnable.run(IntegrationRunner.java:87)[classes /:na] at java.util。 concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)[na:1.8.0_45] at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:617)[na:1.8.0_45] at java.lang。 Thread.run(Thread.java:745)[na:1.8.0_45]

這是說401未經授權的錯誤。 它是如何通過SOAP UI工作的,以及為什么它不能通過JAVA客戶端工作。

我通過TCPMon監控http流量,除了標頭都相同。 所以我添加了從SOAP UI工具到我的JAVA Client的標題,但仍然沒有運氣。 我得到了同樣的401未經授權的錯誤。

以下是SOAP UI和JAVA Client的soap請求。

SOAP UI請求:

POST https://apps.greystar.com/gsWebService/gsExtract.asmx HTTP/1.1
Accept-Encoding: gzip,deflate
Content-Type: application/soap+xml;charset=UTF-8;action="https://apps.greystar.com/greystarExtract"
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36
Content-Length: 692
Host: apps.greystar.com
Connection: Keep-Alive

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"  xmlns:apps="https://apps.greystar.com/">
  <soap:Header/>
  <soap:Body>
     <apps:greystarExtract>
        <apps:axmlVendorCode>VENDOR_CODE</apps:axmlVendorCode>
        <apps:axmlToken>PASSWORD</apps:axmlToken>
        <apps:axmlExtractType>PROPERTY_LIST</apps:axmlExtractType>
        <apps:axmlFormat>XML</apps:axmlFormat>
        <apps:axmlParameters></apps:axmlParameters>
     </apps:greystarExtract>
  </soap:Body>
</soap:Envelope>

JAVA客戶端請求:

POST /gsWebService/gsExtract.asmx HTTP/1.1
Content-Type: application/soap+xml; charset=UTF-8; action="https://apps.greystar.com/greystarExtract
Accept-Encoding: gzip,deflate
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36[\r][\n]
Connection: Keep-Alive
Host: apps.greystar.com
Transfer-Encoding: chunked

<?xml version='1.0' encoding='UTF-8'?>
<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope">
     <soapenv:Header />
     <soapenv:Body>
        <ns1:greystarExtract xmlns:ns1="https://apps.greystar.com/">
           <ns1:axmlVendorCode>VENDOR_CODE</ns1:axmlVendorCode>
           <ns1:axmlToken>PASSWORD</ns1:axmlToken>
           <ns1:axmlExtractType>PROPERTY_LIST</ns1:axmlExtractType>
           <ns1:axmlFormat>JSON</ns1:axmlFormat>
           <ns1:axmlParameters></ns1:axmlParameters>
        </ns1:greystarExtract>
     </soapenv:Body>
</soapenv:Envelope>

注意:我通過查看SOAP UI標頭添加了JAVA Client標頭。 實際的JAVA客戶端標題如下

POST /gsWebService/gsExtract.asmx HTTP/1.1
Content-Type: application/soap+xml; charset=UTF-8;               
action="https://apps.greystar.com/greystarExtract
User-Agent: Axis2
Host: apps.greystar.com
Transfer-Encoding: chunked

通過JAVA客戶端失敗的原因可能是什么? 任何人都可以回答我的問題,因為我堅持到這里。

在此先感謝,Amar.T

我嘗試了其他第三方庫,並按預期工作。 我嘗試了CXF和SOAP UI JAVA API ,並按預期工作。 我不知道為什么它不能與APACHE AXIS2合作。

如果有人找到答案,為什么它不與AXIS2合作,請發布答案。

感謝和問候,Amar.T

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM