2012-02-17 42 views
0

我想在Matlab中使用Web服務,但我遇到了問題。URLConnection不檢索標題

web服務發送一個cookie進行matlab忽略的認證。 MATLAB函數callSoapService使用此Java代碼:

url = URL(endpoint); 
if isempty(proxy) 
    httpConn = url.openConnection; 
else 
    httpConn = url.openConnection(proxy); 
end 
httpConn.setRequestProperty('Content-Type','text/xml; charset=utf-8'); 
httpConn.setRequestProperty('SOAPAction',soapAction); 
httpConn.setRequestMethod('POST'); 
httpConn.setDoOutput(true); 
httpConn.setDoInput(true); 
outputStream = httpConn.getOutputStream; 
outputStream.write(b); 
outputStream.close; 
inputStream = httpConn.getInputStream; 
byteArrayOutputStream = java.io.ByteArrayOutputStream; 
isc = InterruptibleStreamCopier.getInterruptibleStreamCopier; 
isc.copyStream(inputStream,byteArrayOutputStream); 
inputStream.close; 
byteArrayOutputStream.close; 
resp = byteArrayOutputStream.toString('UTF-8'); 

如果我寫httpConn.getHeaderFields()它返回一個空列表,而不是與cookie頭。任何想法? 在java文檔中它說你應該調用httpConn.connect()並且Matlab沒有這樣做,我在代碼的某處添加了一行代碼只是爲了嘗試,但它沒有效果lol

回答

0

我找到了解決方案。

ASP.NET未發送cookie,因爲Java用戶代理Mozilla/5.0的瀏覽器功能對象(Java 1.6.0_17; Windows 7 6.1 amd64; en_US)ICEbrowser/v6_0_2在Cookie字段中返回false。

我創建了一個新的java.browser文件並將其放在App_Browsers目錄中。我重新部署了應用程序,並且它工作正常! ASP.Net將cookie發送給Matlab。

接下來我要做的是修改Matlab Soap函數,以便每次都接收並重新發送cookie。我張貼在http://www.cadec-online.com/Help/API.aspx#Matlab

解決,我報道這個問題MATLAB的:http://www.mathworks.com/support/service_requests/Service_Request_Detail.do?row_id=1-GQMEDO

http://msdn.microsoft.com/en-us/library/system.web.httpbrowsercapabilities.aspx