1. 程式人生 > >HTTP+XML方式介面資料傳輸

HTTP+XML方式介面資料傳輸

一.客戶端

2.傳送請求資料

{

   組裝報文格式傳送資訊

   StringBuffer sendStr = new StringBuffer(1024);
   sendStr.append("<?xml version=/"1.0/" encoding=/"GBK/"?>");
   sendStr.append("<operation_in type=/"struct/">");
   sendStr.append("<service_name type=/"string/">RDMP_ToDoTaskQuery</service_name>");
   sendStr.append("<sysfunc_id type=/"int/">61590334</sysfunc_id>");
   sendStr.append("<request_type type=/"int/">1002</request_type>");
   sendStr.append("<verify_code type=/"string/">789730661774598915448481</verify_code>");
   sendStr.append("<operator_id type=/"string/">"+operator_id+"</operator_id>");
   sendStr.append("<organ_id type=/"int/">0000000</organ_id>");
   sendStr.append("<request_time type=/"datetime/">"+System.currentTimeMillis()/1000+"</request_time>");
   sendStr.append("<request_seq type=/"long/"></request_seq>");
   sendStr.append("<request_source type=/"int/">304061</request_source>");
   sendStr.append("<request_target type=/"int/">201024</request_target>");
   sendStr.append("<msg_version type=/"string/">0100</msg_version>");
   sendStr.append("<cont_version type=/"string/">0100</cont_version>");
   sendStr.append("<content type=/"string/">");
   sendStr.append("<![CDATA[");
   sendStr.append("<?xml version=/"1.0/" encoding=/"GBK/"?>");
   sendStr.append("<request type=/"struct/">");
   sendStr.append("<operator_id>"+operator_id+"</operator_id>");
   sendStr.append("</request>");
   sendStr.append("]]>");
   sendStr.append("</content>");
   sendStr.append("</operation_in>");
  

   傳送報文格式傳送資訊

   URL url = null;
   HttpURLConnection conn = null;
   try{

    //HTTP的請求URL

    url = new URL(http://10.46.34.233/fcgi-bin/UIG_SFC_186);
    conn = (HttpURLConnection)url.openConnection();
    conn.setRequestProperty("Pragma:", "no-cache");
    conn.setRequestProperty("Content-Type", "text/xml;charset=GBK");
    //HTTP的POST方式進行資料傳輸
    conn.setDoInput(true);
    conn.setDoOutput(true);
    conn.setRequestMethod("POST");
    OutputStream dataOut = conn.getOutputStream();
    StringBuffer sendStr = new StringBuffer(1024);
    dataOut.write(content.getBytes());
    dataOut.write(sendStr.toString().getBytes());
    dataOut.flush();
    dataOut.close();
    //獲取響應內容
   try{
     conn.connect();

     BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
     //注意BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream(),"GBK")); 這麼寫,是因為有時候網路傳輸過程中字元會被修改,如GB-2312,因為出現亂碼,就需要將此處加入GBK。
    //loger.info("獲取預設字元編碼:"+Charset.defaultCharset());
    String line = "";
    StringBuffer buffer = new StringBuffer(1024);
    while((line=in.readLine())!=null){
     buffer.append(line);
    }
    in.close();
    result = buffer.toString();
     //獲取到的回饋資訊:+result+結果集。
    }catch(IOException e){
     e.printStackTrace();
    }catch(Exception e){
     e.printStackTrace();
    }
   }catch(Exception e){
    e.printStackTrace();
   }

}

二.伺服器端

2.獲取監聽到的內容

{

  BufferedReader inputStream = new BufferedReader(new InputStreamReader(request.getInputStream()));
  StringBuffer buffer = new StringBuffer(1024);
  String line = "";
  String isSuccessed;
  while((line=inputStream.readLine()) != null)
  {
   buffer.append(line);
  }
  String result = buffer.toString();
  loger.info("獲取監聽到的內容:"+result);
  WorkProcessContent workContent = new WorkProcessContent();
  //監聽內容
  if(!result.equals(""))
  {

   //進行業務處理

   StringReader reads = new StringReader(result.toString());
     InputSource sources = new InputSource(reads);
     SAXBuilder sax = new SAXBuilder();
     try {
      Document doc = sax.build(sources);
      Element root =doc.getRootElement();
      String content = root.getChildText("content");//得到資料TEST
      StringReader readesh= new StringReader(content.toString());
         InputSource sourcere= new InputSource(readesh);
         SAXBuilder resb = new SAXBuilder();
         Document redoc = resb.build(sourcere);
         //得到根節點
         Element taskinfos = redoc.getRootElement();
         List listAttachInfo = taskinfos.getChildren();
         for (int i = 0; i < listAttachInfo.size(); i++)
        {

             Element taskinfo = (Element) listAttachInfo.get(i);
             String task_id = taskinfo.getChildText("task_id");
             .........

     }

   }

}

相關推薦

HTTP+XML方式介面資料傳輸

一.客戶端 2.傳送請求資料 {    組裝報文格式傳送資訊    StringBuffer sendStr = new StringBuffer(1024);   sendStr.append("<?xml version=/"1.0/" encoding=/"GB

使用python2實現http multipart/form-data資料傳輸

Python3貌似有比較方便的方式,Python2得自己寫點程式碼。 程式碼基本上參考了一位仁兄釋出在github上的程式碼,但是找不到他的連結了,對不住。不過他的程式碼貌似跑不過,我這裡做了修改後,釋出在這裡,希望對後來人有幫助。 其實最重要的還是要了解http有關這部分

java 使用 okhttp傳送http請求獲取介面資料

為什麼需要使用okhttp: 目前我們學習的所有中只有html中的超連結和form表單才可以傳送http請求,另外一個就是ajx非同步傳送http請求獲取資料。 但是在實際開發需求中

例項:Netty 基於Http協議下的資料傳輸Demo

Http/Https協議是最重要最常用到的協議之一,Netty提供了一些了的Handler來處理Http協議下的編碼工作。下面就介紹一個Netty例項: 1.通過HttpClient傳送Protobuf型別資料到服務端 2.服務端Netty負責把接收到的Http請求中的資料

微控制器使用HTTP POST方式傳送資料

HTTP請求是依賴TCP的,也就是在微控制器上面,我們一樣可以使用,無非就是先發送一個http請求頭,再發送正文,比如我最近就使用了http post方式傳送資料到伺服器,伺服器端使用的是WEB API,微控制器使用的STM32 與SIM800C,SIM800C使用GPRS連

XML和資料庫--資料傳輸

內容:目錄 1.0 簡介 本論文簡要的探討了XML和資料庫之間的關係,同時列出一些可以使用資料庫處理XML文件的軟體。雖然這裡不打算詳盡地介紹這些軟體,但是筆者希望它能夠描述使用資料庫處理XML文件中的主要部分。這裡有點偏向與關係資料庫,因為我的經驗如此。 在開始討論XML和資料庫之前,我們需要回答一個

工業相機常見的資料傳輸介面方式

CVBS、VGA、 DVI 、 HDMI 、 SDI、GigE、USB3.0、Cameralink、HSLink、CoaXPress 目前在視訊會議領域CVBS、VGA、DVI、HDMI、SDI使用最廣泛 在廣播電視領域CVBS、HDMI、SDI使用最廣泛,在安防領域

http協議基礎(三)幾種資料傳輸方式

說說http協議的一些特點: 1)無狀態 http協議是一種自身不對請求和響應之間的通訊狀態進行儲存的協議,即無狀態協議。 這種設定的好處是:更快的處理更多的請求事務,確保協議的可伸縮性 不過隨著web的不斷髮展,有時候,需要將這種狀態進行保持,隨即,就引入了cookie技術,cookie技術通過在請

Http使用post方式提交資料(使用java標準介面

本文內容:使用java標準介面,實現http用post方式提交資料。 ------------------------------------------------------------------------------------------------------

Http使用post方式提交資料(使用apache標準介面

本文:目的和前一篇一樣,唯一區別是本文用apache標準介面進行http的post提交資料,而前一篇是用 java標準介面實現。 ------------------------------------------------------------------------

介面技術第六章——輸入輸出介面資料傳輸控制方式總結

正在學習介面技術和計算機組成原理,中間有一些重疊的部分就放在一起了,至於DMA,中斷之類的會放在後面講解 6.1 介面綜述 硬體介面通常稱為I/O介面,把外圍裝置同微型計算機連線起來的電路稱為外設介面電路,簡稱外設介面。I/O介面是CPU同外界進行資訊交換的中轉站 使用介面的原因 速度不匹配 外設

php 獲取xml介面資料的處理

xml格式返回的是資料一般是這樣的,但也有不同: <?xml version="1.0" encoding="gbk"?> <root> <head> <actdate>20170805</actdate

資料傳輸方式(並行/序列通訊;同步/非同步;單工、半雙工、全雙工)

資料傳輸主要有三種不同的劃分方式。 並行/序列通訊; 同步/非同步傳輸; 按資料的不同傳輸方向可分為單工、半雙工、全雙工。 1.並行通訊和序列通訊 (1)並行通訊 並行通訊是同時傳送資料的各個位進行傳送or接收的通訊方式。 傳輸率比序列介面快8倍,理論值為1Mbits/s. 傳輸的資訊不

Http方式介面post呼叫工具 HttpUtil

工作中有時候需要呼叫外部的介面,通過http方式呼叫,記錄一下這個工具類。 public class HttpUtil { private static Logger log = LoggerFactory.getLogger(HttpUtil.class); private f

從壹開始前後端分離【 .NET Core2.0 +Vue2.0 】框架之十二 || 三種跨域方式比較,DTOs(資料傳輸物件)初探

更新反饋 1、博友@童鞋說到了,Nginx反向代理實現跨域,因為我目前還沒有使用到,給忽略了,這次記錄下,為下次補充。 程式碼已上傳Github+Gitee,文末有地址   今天忙著給小夥伴們提出的問題解答,時間上沒把握好,都快下班了,趕緊釋出:書說上文《從壹開始前

java 對接webapi介面資料提交方式之 application/x-www-form-urlencoded

Content-Type: application/x-www-form-urlencoded;charset=utf-8  這應該是最常見的 POST 提交資料的方式了。瀏覽器的原生 form 表單,如果不設定 enctype 屬性,那麼最終就會以 application/x-www

資料傳輸的三種交換方式

                     電路交換,報文交換,分組交換首先我們來看看三種交換方式的示意圖對照上面的圖,給出三種交換方式在資料傳輸階段的主要特點:電路交換:整個報文的位元流連續的從源點直達終點,好像在一個管道中傳送。報文交換:整個報文先傳輸到相鄰的結點,全部儲存下來後查詢轉發表,轉發到下一個結點

C#中如何通過HTTP協議的不同請求方式獲取資料

private string GetRequest(string url)         {            string content = "";            Uri httpURL = new Uri(url);            ///Http

資料傳輸方式 « 關於網路那些事...

資料傳輸方式紀錄 資料傳輸常見Json, XML 的方式傳送,但這裡我們要說明的是在細節一點的格式傳輸方式 Byte 格式傳輸 一般各種格式的資料,傳輸前都必須轉為

基於WinInet的HTTP與HTTPS資料傳輸上傳與下載的對比總結

背景 之前就是用WinInet庫寫了HTTP檔案上傳和下載以及HTTPS檔案上傳和下載的小程式,現在,要特意寫一篇文章來總結HTTP和HTTPS之間檔案上傳和檔案下載之間的異同點。當然,本文只是從程式設計開發的角度進行總結,並不是從協議本身去比較。   參考文件和完整的文件和原