1. 程式人生 > >Java 通過httpClient Post方式提交xml,並從服務端返回資料

Java 通過httpClient Post方式提交xml,並從服務端返回資料

在通過http請求連線服務端程式時,有兩種方式httpClient這個不是標準的java庫,但是是開源專案,能夠快捷的開發,但如果做Android的開發,推薦使用httpUrlConnect這個工具。但是httpClient確實也是一個比較好用的工具。
這裡面只是做個demo,方便自己學習,也僅為大家做點參考。

客戶端程式碼:PostXml.java,但在之前需要匯入httpClient的包,可以去官網下,百度一下就能夠找到,將包新增到工程裡面。

package PostPager;

import java.io.IOException;
import java.util.ArrayList
; import java.util.List; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.NameValuePair; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.ResponseHandler; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache
.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.message.BasicNameValuePair; import org.apache
.http.params.CoreProtocolPNames; import org.apache.http.util.EntityUtils; public class PostXml { static String xml = "<?xml version='1.0' encoding='UTF-8'?><group><name>周成林</name><age>22</age><Image>我們</Image></group>"; public static void main(String args[]) { try { CloseableHttpClient httpclient = HttpClients.createDefault(); System.out.println(xml); HttpPost httpPost = new HttpPost("http://119.29.85.118//finance.php"); httpPost.addHeader("Content-Type","text/html;charset=UTF-8"); //解決中文亂碼問題 StringEntity stringEntity = new StringEntity(xml,"UTF-8"); stringEntity.setContentEncoding("UTF-8"); httpPost.setEntity(stringEntity); //CloseableHttpResponse response = httpclient.execute(httpPost); System.out.println("Executing request " + httpPost.getRequestLine()); // Create a custom response handler ResponseHandler<String> responseHandler = new ResponseHandler<String>() { @Override public String handleResponse(final HttpResponse response) throws ClientProtocolException, IOException {// int status = response.getStatusLine().getStatusCode(); if (status >= 200 && status < 300) { HttpEntity entity = response.getEntity(); return entity != null ? EntityUtils.toString(entity) : null; } else { throw new ClientProtocolException( "Unexpected response status: " + status); } } }; String responseBody = httpclient.execute(httpPost, responseHandler); System.out.println("----------------------------------------"); System.out.println(responseBody); } catch (Exception e) { System.out.println(e); } } }

finance.php
服務但程式碼:

 <?php

         @header("Content-type: text/html; charset=utf-8");
         $file_in = file_get_contents("php://input");
         $request=simplexml_load_string($file_in);
         foreach($request->children() as $childItem) {
          //輸出xml節點名稱和值
                 echo $childItem->getName() . "->".$childItem."<br />";
          //其他操作省略
         }
         $xml    ="我們";
         echo $xml;
 ?>

在這裡面有箇中文編碼的問題,全部設為UTF-8,一開始由於放鬆xml的方式中編碼沒有設定,預設不是UTF-8編碼,導致中文一直有問題。

最後的輸出結果為:
name->周成林
age->22
Image->我們
我們

httpClient類中提供了很多方法,需要我們好好研究一波。

相關推薦

Java 通過httpClient Post方式提交xml服務返回資料

在通過http請求連線服務端程式時,有兩種方式httpClient這個不是標準的java庫,但是是開源專案,能夠快捷的開發,但如果做Android的開發,推薦使用httpUrlConnect這個工具。但是httpClient確實也是一個比較好用的工具。 這裡面

Java 通過HttpClient Post方式提交json服務返回json資料

直接上程式碼吧,和前面幾篇文章都差不多 java程式碼: package PostPager; import java.io.IOException; import java.io.InputStream; import java.io.Output

Java 通過HttpURLConnection Post方式提交json服務返回json資料

這個技術和xml差不過,主要是服務端程式碼稍微修改,客戶端程式碼修改部分傳遞引數就可以完成,但在之前需要匯入json所需要的jar包。 PostJson.java程式碼 package PostPager; import java.io.InputSt

java模擬表單上傳檔案java通過模擬post方式提交表單實現圖片上傳功能例項

package com.zdz.httpclient;import java.io.BufferedReader;import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.File;import java.io.

QT5中實現多視窗切換子視窗返回資料

該程式的功能:主窗口裡有兩個button和ltextEdit,按下下一頁button後彈出子視窗並隱藏主視窗,按下退出Button後退出程式。子視窗有文字框lineEdit和button,按下子視窗的

POST方式提交XML呼叫介面

當呼叫的介面越來越多的時候,我也深深的知道自己所見到的世面是越來越窄,之前一直沒有用過xml來傳輸介面引數,總之,該學習的還是要學習,無論是xml還是json還是什麼的,都是雙方約定好的一種傳輸協議,

httpclient通過POST來上傳檔案而不是通過流的形式服務進行解析(通過httpmime.jar來操作)

1. 首先需要對應的JAR包 匯入 httpmime-4.1.1.jar。 package url; import io.IoStreamUtil; import java.io.File; import java.io.IOException; import jav

JAVA--通過DOM4J的方式讀取xml檔案簡單例項

程式碼如下: package com.xml.dom4j; import java.io.File; import java.util.Iterator; import java.util.List

httpclient通過POST來上傳文件而不是通過流的形式服務進行解析 通過httpmime jar來操作

http jar包 localhost parser urn lex leo system methods 1. 首先需要對應的JAR包 導入 httpmime-4.1.1.jar。 package url; import io.IoStreamUtil

JAVA-通過介面讀取本地jar包呼叫其中實現了介面的類中的方法

URLClassLoader classLoader = new URLClassLoader(new URL[]{new URL("jar 本地路徑,例如:file:D:/project/inputsplit-1.0-SNAPSHOT.jar")}, Thread.currentThread().ge

Java 使用科大訊飛MSC SDK在web服務將文字合成語音將pcm檔案轉為wav格式返回

本文講述的是使用科大訊飛MSC SDK將語文字合成語音,然後以web介面的形式把合成的音訊資料返回前端。 流程 1、接收介面引數傳入的要合成的資料 2、使用MSC SDK把資料合成*.pcm檔案 3、獲取wav檔案格式頭 4、將格式頭與檔案內容拼接

easyUI form提交與springMVC互動時服務返回的錯誤處理

easyUI form的submit介面中沒有提供error回撥函式,網上一種解決方案是串聯.success(function(){}).error(function(){}),然後通過jqXHR進行統一處理;但是我發現這種方案不論服務端返回正確還是異常,都會呼叫.erro

javaweb網頁上傳圖片顯示在頁面上服務存到磁碟(base64編碼解碼)

最後 服務端接收到頁面傳過來的全部的BASE64編碼後 public String uploadimgsave(String imagepath){   String url = "";   OutputStream os=null;   String ImgPath="D:/img";   //檔案存放目

java中httpclent以post方式提交請求時http返回碼是302重定向時不自動跳轉的處理

場景: 介面A:請求地址為http://www.test.com/test 介面A的功能,會把接收到的引數url寫入到header的Location屬性中 在java中,使用httpclient傳送請求, 在以get方式傳送請求時,http的返回碼是200,自動處理了重定

Python 編寫通過post方式提交的接口測試代碼

urlencode nco 出現 第一次用 python 方式 pen 沒有 iterable 第一次用python編寫程序 是照著視頻裏編寫的 但是期間也出現了很多錯誤 視頻內用了是Python2 版本的 而我的是python 3版本的 寫這兩程序時就發現有很多不同

Multipart/form-data POST檔案上傳詳解 理論 簡單的HTTP POST 大家通過HTTP向伺服器傳送POST請求提交資料都是通過form表單提交程式碼如下:

Multipart/form-data POST檔案上傳詳解 理論 簡單的HTTP POST 大家通過HTTP向伺服器傳送POST請求提交資料,都是通過form表單提交的,程式碼如下: <form method="post"action="http://w.soh

JAVA模擬post方式提交URL引數和body內json引數

package test.itsm; import java.io.IOException; import java.io.InputStream; import java.io.OutputStre

PB 通過http協議以POST方式XML傳送到協議伺服器

------解決方案-------------------------------------------------------- Blob lblb_args String ls_header String ls_url String ls_args long ll_length integer li_r

window.open() POST 方式提交json資料以及後臺的json序列化為物件

在匯出時候,ajax實現並不好處理,可以選擇用window.open()的方式,後臺框架選擇poi或者jxl即可,若不是太過複雜的匯出選擇jxls模板的方式最為方便。 但在處理複雜的匯出報表時候我選擇是用poi框架寫呼叫poiAPI的方式實現。window.open()傳遞

JAVA HttpURLConnection Post方式提交傳遞引數

public class HttpURLConnectionPost { /** * @param args * @throws IOException */ public static void main(String[] args) throws IO