面試中有一個題目是發送(接受)xml,並解析。
當時有接觸但是沒有注意,所以回來強力關注下,並且記錄在這,大家一起學習下:
[java]
public static StringBuffer sendSoapMsg(String soapMessage,
String targetUrl, String soapAction, Long timeout) throws Exception
{
busLogger.enterFuncDebugLog(soapMessage, soapAction, targetUrl, timeout);
//儲存響應訊息
HttpURLConnection conn = null;
BufferedReader bf = null;
StringBuffer sb = new StringBuffer();
try
{
URL url = new URL(targetUrl);
conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("POST");
conn.setDoOutput(true);
conn.addRequestProperty("SOAPAction", soapAction);
conn.addRequestProperty("Content-type", "text/xml; charset=UTF-8");
//預設逾時時間30秒
conn.setConnectTimeout(timeout.intValue());
//將發送請求參數寫入到http請求中
conn.getOutputStream().write(soapMessage.getBytes());
conn.getOutputStream().flush();
conn.getOutputStream().close();
//從伺服器擷取響應結果
InputStream in = conn.getInputStream();
//從伺服器讀取結果
bf = new BufferedReader(new InputStreamReader(in));
String s = null;
while ((s = bf.readLine()) != null)
{
sb.append(s);
}
}
catch (Exception e)
{
busLogger.excepFuncDebugLog(e);
throw e;
}
finally
{
if (null != bf)
{
try
{
bf.close();
}
catch (IOException e)
{
busLogger.excepFuncDebugLog(e);
}
}
if (conn != null)
{
conn.disconnect();
}
}
busLogger.exitFuncDebugLog(sb.toString());
return sb;
}
public static StringBuffer sendSoapMsg(String soapMessage,
String targetUrl, String soapAction, Long timeout) throws Exception
{
busLogger.enterFuncDebugLog(soapMessage, soapAction, targetUrl, timeout);
//儲存響應訊息
HttpURLConnection conn = null;
BufferedReader bf = null;
StringBuffer sb = new StringBuffer();
try
{
URL url = new URL(targetUrl);
conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("POST");
conn.setDoOutput(true);
conn.addRequestProperty("SOAPAction", soapAction);
conn.addRequestProperty("Content-type", "text/xml; charset=UTF-8");
//預設逾時時間30秒
conn.setConnectTimeout(timeout.intValue());
//將發送請求參數寫入到http請求中
conn.getOutputStream().write(soapMessage.getBytes());
conn.getOutputStream().flush();
conn.getOutputStream().close();
//從伺服器擷取響應結果
InputStream in = conn.getInputStream();
//從伺服器讀取結果
bf = new BufferedReader(new InputStreamReader(in));
String s = null;
while ((s = bf.readLine()) != null)
{
sb.append(s);
}
}
catch (Exception e)
{
busLogger.excepFuncDebugLog(e);
throw e;
}
finally
{
if (null != bf)
{
try
{
bf.close();
}
catch (IOException e)
{
busLogger.excepFuncDebugLog(e);
}
}
if (conn != null)
{
conn.disconnect();
}
}
busLogger.exitFuncDebugLog(sb.toString());
return sb;
}。其中的String內容為xml格式的。