zoukankan      html  css  js  c++  java
  • 通过原生的java Http请求soap发布接口

    package com.aiait.ivs.util;
    
    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.OutputStream;
    import java.io.OutputStreamWriter;
    import java.net.HttpURLConnection;
    import java.net.MalformedURLException;
    import java.net.URL;
    import java.net.URLConnection;
    
    import org.apache.commons.httpclient.HttpClient;
    import org.apache.commons.httpclient.NameValuePair;
    import org.apache.commons.httpclient.methods.PostMethod;
    import org.apache.log4j.Logger;
    
    public class HttpUtil {
        private static final Logger logger = Logger.getLogger(HttpUtil.class);
            
        //请求soap接口用这个方法
        public static String soapPostSendXml(String SOAPUrl,String parXmlInfo){
              StringBuilder result = new StringBuilder();
              try {
                  String SOAPAction = "submitMs";
                  // Create the connection where we're going to send the file.
                  URL url = new URL(SOAPUrl);
                  URLConnection connection = url.openConnection();
                  HttpURLConnection httpConn = (HttpURLConnection) connection;
                  // how big it is so that we can set the HTTP Cotent-Length
                  // property. (See complete e-mail below for more on this.)
                  // byte[] b = bout.toByteArray();
                  byte[] b = parXmlInfo.getBytes("ISO-8859-1");
                  // Set the appropriate HTTP parameters.
                  httpConn.setRequestProperty( "Content-Length",String.valueOf( b.length ) );
                  httpConn.setRequestProperty("Content-Type","text/xml; charset=utf-8");
                  httpConn.setRequestProperty("SOAPAction",SOAPAction);
                  httpConn.setRequestMethod( "POST" );
                  httpConn.setDoOutput(true);
                  httpConn.setDoInput(true);
            
                  // Everything's set up; send the XML that was read in to b.
                  OutputStream out = httpConn.getOutputStream();
                  out.write( b ); 
                  out.close();
                  // Read the response and write it to standard out.
                  InputStreamReader isr =new InputStreamReader(httpConn.getInputStream());
                  BufferedReader in = new BufferedReader(isr);
                  String inputLine;
                  while ((inputLine = in.readLine()) != null)
                          result.append(inputLine);
                  in.close();
              
              } catch (MalformedURLException e) {
                  e.printStackTrace();
              } catch (IOException e) {
                  e.printStackTrace();
              }
              logger.info("
     soap respone 
    "+result);
              return result.toString();
          }
            
          
          public static String readTxtFile(String filePath){
              StringBuilder result = new StringBuilder();  
              try {
    
                      String encoding="GBK";
    
                      File file=new File(filePath);
    
                      if(file.isFile() && file.exists()){ //判断文件是否存在
    
                          InputStreamReader read = new InputStreamReader(
    
                          new FileInputStream(file),encoding);//考虑到编码格式
    
                          BufferedReader bufferedReader = new BufferedReader(read);
    
                          String lineTxt=null;
    
                          while((lineTxt = bufferedReader.readLine()) != null){
                              result.append(lineTxt); 
                              System.out.println(lineTxt);
    
                          }
    
                          read.close();
    
              }else{
    
                  System.out.println("找不到指定的文件");
    
              }
    
              } catch (Exception e) {
    
                  System.out.println("读取文件内容出错");
    
                  e.printStackTrace();
    
              }
    
              return result.toString();
          }
        
        /**
         * http post请求
         * @param url                        地址
         * @param postContent                post内容格式为param1=value¶m2=value2¶m3=value3
         * @return
         * @throws IOException
         */
        public static String httpPostRequest(URL url, String postContent) throws Exception{
            OutputStream outputstream = null;
            BufferedReader in = null;
            try
            {
                URLConnection httpurlconnection = url.openConnection();
                httpurlconnection.setConnectTimeout(10 * 1000);
                httpurlconnection.setDoOutput(true);
                httpurlconnection.setUseCaches(false);
                OutputStreamWriter out = new OutputStreamWriter(httpurlconnection
                        .getOutputStream(), "UTF-8");
                out.write(postContent);
                out.flush();
                
                StringBuffer result = new StringBuffer();
                in = new BufferedReader(new InputStreamReader(httpurlconnection
                        .getInputStream(),"UTF-8"));
                String line;
                while ((line = in.readLine()) != null)
                {
                    result.append(line);
                }
                return result.toString();
            }
            catch(Exception ex){
                logger.error("post请求异常:" + ex.getMessage());
                throw new Exception("post请求异常:" + ex.getMessage());
            }
            finally
            {
                if (outputstream != null)
                {
                    try
                    {
                        outputstream.close();
                    }
                    catch (IOException e)
                    {
                        outputstream = null;
                    }
                }
                if (in != null)
                {
                    try
                    {
                        in.close();
                    }
                    catch (IOException e)
                    {
                        in = null;
                    }
                }
            }    
        }    
        
        /**
         * 通过httpClient进行post提交
         * @param url                提交url地址
         * @param charset            字符集
         * @param keys                参数名
         * @param values            参数值
         * @return
         * @throws Exception
         */
        public static String HttpClientPost(String url , String charset , String[] keys , String[] values) throws Exception{
            HttpClient client = null;
            PostMethod post = null;
            String result = "";
            int status = 200;
            try {
                   client = new HttpClient();                
                   //PostMethod对象用于存放地址
                 //总账户的测试方法
                   post = new PostMethod(url);         
                   //NameValuePair数组对象用于传入参数
                   post.addRequestHeader("Content-Type","application/x-www-form-urlencoded;charset=" + charset);//在头文件中设置转码
    
                   String key = "";
                   String value = "";
                   NameValuePair temp = null;
                   NameValuePair[] params = new NameValuePair[keys.length];
                   for (int i = 0; i < keys.length; i++) {
                       key = (String)keys[i];
                       value = (String)values[i];
                       temp = new NameValuePair(key , value);   
                       params[i] = temp;
                       temp = null;
                   }
                  post.setRequestBody(params); 
                   //执行的状态
                  status = client.executeMethod(post); 
                  logger.info("status = " + status);
                   
                  if(status == 200){
                      result = post.getResponseBodyAsString();
                  }
                   
            } catch (Exception ex) {
                // TODO: handle exception
                throw new Exception("通过httpClient进行post提交异常:" + ex.getMessage() + " status = " + status);
            }
            finally{
                post.releaseConnection(); 
            }
            return result;
        }
        
        /**
         * 字符串处理,如果输入字符串为null则返回"",否则返回本字符串去前后空格。
         * @param inputStr            输入字符串
         * @return    string             输出字符串
         */
        public static String doString(String inputStr){
            //如果为null返回""
            if(inputStr == null || "".equals(inputStr) || "null".equals(inputStr)){
                return "";
            }    
            //否则返回本字符串把前后空格去掉
            return inputStr.trim();
        }
    
        /**
         * 对象处理,如果输入对象为null返回"",否则则返回本字符对象信息,去掉前后空格
         * @param object
         * @return
         */
        public static String doString(Object object){
            //如果为null返回""
            if(object == null || "null".equals(object) || "".equals(object)){
                return "";
            }    
            //否则返回本字符串把前后空格去掉
            return object.toString().trim();
        }
        
    }


    请求的XML 案例如下

    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:eapp="http://www.gmw9.com">
       <soapenv:Header>
          <wsse:Security  xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" mustUnderstand="0">
             <wsse:UsernameToken>
                <wsse:Username>amtf</wsse:Username>
                <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">aaa</wsse:Password>
             </wsse:UsernameToken>
            
          </wsse:Security>
       </soapenv:Header>
       <soapenv:Body>
          <eapp:nmamtf>
             <eapp:amtf>041</eapp:amtf>
             <eapp:dzwps>77771</eapp:amtf>
             
          </eapp:nmamtf>
       </soapenv:Body>
    </soapenv:Envelope>
  • 相关阅读:
    与开发团队高效协作的8个小技巧
    9本java程序员必读的书(附下载地址)
    NPOI导出饼图到Excel
    EF6不支持sqlite Code First解决方案
    C#程序访问底层网络
    如何自己开发软件测试工具?
    .Net mvc 根据前台参数动态绑定对象
    在SSM框架里新增一个功能
    2018-10-12 例会总结
    2018-10-11 java从入门到放弃--方法
  • 原文地址:https://www.cnblogs.com/nmdzwps/p/6769692.html
Copyright © 2011-2022 走看看