import java.io.*; import java.net.*; String encoding = "UTF-8"; String id_checkserviceurl = "http://.."; //目标网址 /** * 用户把SOAP请求发送给服务器端,并返回服务器点返回的输入流 * 对服务器端返回的XML进行解析 * XML转字符串 * @return 字符串 */ private String getDataFromServer(String soapRequest){ StringBuffer xmlbuf = new StringBuffer(); try { if (soapRequest != null) { URL url = new URL(id_checkserviceurl); HttpURLConnection conn = (HttpURLConnection)url.openConnection(); conn.setConnectTimeout(2000); conn.setRequestMethod("POST"); conn.setUseCaches(false); //POST请求不能使用缓存 conn.setDoInput(true); conn.setDoOutput(true); //设置是否向httpUrlConnection输出,因为是post请求,参数要放在http正文内,因此需要设为true, 默认情况下是false; //设置请求属性,key 和 value都为String类型 conn.setRequestProperty("Content-Type", "text/xml; charset=" + encoding); conn.setRequestProperty("Content-Length", Integer.toString(soapRequest.length())); //用户需求 conn.setRequestProperty("HOST", "目标主机"); conn.setRequestProperty("SOAPAction", "目标地址"); //pw以字符为单位输出——支持中文,osw以字节输出 PrintWriter pw = new PrintWriter(new OutputStreamWriter(conn.getOutputStream(), encoding)); pw.write(soapRequest); //向对象输出流写数据,这些数据将存到内存缓冲区中 pw.flush(); // 刷新对象输出流,将任何字节都写入潜在的流,必须有 pw.close(); // 关闭流对象。此时,不能再向对象输出流写入任何数据 // 将内存缓冲区中封装好的完整的HTTP请求电文发送到服务端。 InputStream inputstream = conn.getInputStream(); // 实际发送请求的代码段就在这里 BufferedReader bufreader = new BufferedReader(new InputStreamReader(inputstream, encoding));//不加encoding,将以平台默认编码方式进行解析,可能导致中文乱码 String inputLine = null; while ((inputLine = bufreader.readLine()) != null) xmlbuf.append(inputLine + "/r/n"); //win平台下的回车换行 bufreader.close(); } } catch (Exception e) { e.printStackTrace(); } return xmlbuf.toString(); }