2011-09-20 134 views
4

爲什麼需要搶先認證?搶先認證爲什麼

System.setProperty(「httpclient.authentication.preemptive」,「true」);

我已經在java中編寫了web服務訪問客戶端程序。我們在呼叫對象中設置用戶名和密碼的地方,這是完美的。

最近,我們的服務提供商做出自己身邊的一些變化後,他們並沒有在Web服務調用接收用戶名&密碼,因爲他們不接受用戶名& passwod所以我們無法連接到他們(供應商)服務。

然後我做了谷歌搜索,並發現有關搶先認證。在調用Web服務時,我們將「httpclient.authentication.preemptive」設置爲「true」 - System.setProperty(「httpclient.authentication.preemptive」,「true」); ,那麼我們就能夠收到我們服務提供商的回覆。

當我們刪除System.setProperty(「httpclient.authentication.preemptive」,「true」);那麼我們無法連接到他們的服務。

回答

1

當我們改變交通樞紐= 「的java:org.apache.axis.transport.http.HTTPSender交通樞紐=「 的java:org.apache.axis.transport.http.CommonsHTTPSender」在client-config.wsdd文件中。沒有設置System.setProperty(「httpclient.authentication.preemptive」,「true」); 。

客戶config.wsdd中 -

<?xml version="1.0" encoding="UTF-8"?> 
<deployment 
    name="commonsHTTPConfig" 
    xmlns="http://xml.apache.org/axis/wsdd/" 
    xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"> 

    <!-- use CommonsHTTPSender instead of the default HTTPSender --> 
    <transport name="http" pivot="java:org.apache.axis.transport.http.CommonsHTTPSender" /> 

    <transport name="local" pivot = "java:org.apache.axis.transport.local.LocalSender" /> 
    <transport name="java" pivot="java:org.apache.axis.transport.java.JavaSender" /> 
</deployment>