java客戶端http報文傳送和解析的詳細程式碼
本人新手,最近在java 的xml格式的http報文,希望哪位大俠給指點指點。
現給出報文格式,跪求類似傳送和解析http報文的詳細例子。
傳送的報文格式:
POST ***********************************************
Accept: *****************************************
Referer: *****************************************
Accept-Language: *****************************************
Content-Type:*****************************************
//資料部分
RESULT:xxxxx
//引數
Parameter-Length: \r\n\r\n
<ParameterObjecOBJECTNAME=*************>
<ParaName>ParameterKey</ParaName>
<Value>0</Value>
<ParaName>*************</ParaName>
<Value>*************</Value>
<ParaName>*************</ParaName>
<Value>*************</Value>
<ParaName>*************</ParaName>
<Value>*************</Value>
</ParameterObjec>
返回報文格式:
HTTP/1.1 200 OK
Content-Type:*************
Transfer-Encoding:*************
Connection:*************
RESULT:xxxxx
Parameter-Length: 0 \r\n\r\n
程式碼如下:
URL url = new URL("XXXXX");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setConnectTimeout(Utils.TIMEOUT);
// conn.setReadTimeout(6000);
conn.setDoOutput(true);
conn.setRequestMethod("POST");
conn.setRequestProperty("POST",
XXXXX");
// 增加報頭
conn.setRequestProperty(
"Accept",
"XXXXX");
conn.setRequestProperty("Referer",
"XXXXX");
conn.setRequestProperty("Accept-Language", "XXXXX");
.....
//資料部分
StringBuffer parameterObject = new StringBuffer();
parameterObject
.append("<ParameterObject OBJECTNAME='XXXXX' >");
parameterObject.append("\r\n");
parameterObject.append("<ParaName>XXXXX</ParaName>");
parameterObject.append("\r\n");
parameterObject.append("<Value>XXXXX</Value>");
parameterObject.append("\r\n");
parameterObject.append("</ParameterObject>");
parameterObject.append("\r\n");
// 開啟流,寫入xml資料
StringBuffer data = new StringBuffer();
data.append("RESULT:xxx");
data.append("\r\n");
data.append("Parameter-Length:");
data.append(parameterObject.toString().length());
data.append("\r\n");
data.append("\r\n");
data.append(parameterObject);
// 打出傳送的報文資訊
Utils.LogMessage("send device info xml :\r\n" + data.toString());
OutputStream outputStream = conn.getOutputStream();
outputStream.write(data.toString().getBytes());
outputStream.flush();
outputStream.close();
if (conn.getResponseCode() != HttpURLConnection.HTTP_OK) {
return;
}
InputStream input = conn.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(
input, Utils.CHARSET));
String line = null;
StringBuffer httpRawData = new StringBuffer();
while ((line = reader.readLine()) != null) {
httpRawData.append(line).append("\r\n");
}
if (reader != null) {
reader.close();
}
if (conn != null) {
conn.disconnect();
}
// 打出接受的報文資訊
String httpRawDatas = httpRawData.toString();
Utils.LogMessage("accept device info xml :\r\n" + httpRawDatas);
Map<String,String> InformationMap=new HashMap<String, String>();
InformationMap.put("result", findOprCode(httpRawDatas,""))
InformationMap.put(Utils.DEVICE_NUMBER, Common.getAttributeValue(httpRawDatas,
"XXX1"));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// 根據http返回的資料,解析出結果
public static String findOprCode(String data, String codeName) {
int codeStartIndex = data.indexOf(codeName);
int codeEndIndex = data.indexOf("\\r\n", codeStartIndex);
String resultCode = data.substring(codeStartIndex, codeEndIndex).trim();
return resultCode;
}
public static String getAttributeValue(String httpData, String attribute) {
int attributeIndex = httpData.indexOf(attribute);
int formerValueIndex = httpData.indexOf("<Value>", attributeIndex);
int laterValueIndex = httpData.indexOf("</Value>", formerValueIndex);
return httpData.substring(formerValueIndex, laterValueIndex);
}
相關推薦
java客戶端http報文傳送和解析的詳細程式碼(轉)
HTTP請求報文解剖HTTP請求報文由3部分組成(請求行+請求頭+請求體): 下面是一個實際的請求報文: ①是請求方法,GET和POST是最常見的HTTP方法,除此以外還包括DELETE、HEAD、OPTIONS、PUT、TRACE。不過,當前的大多數瀏覽器只支援GET和P
java客戶端http報文傳送和解析的詳細程式碼
本人新手,最近在java 的xml格式的http報文,希望哪位大俠給指點指點。 現給出報文格式,跪求類似傳送和解析http報文的詳細例子。 傳送的報文格式: POST *********************************************** Acce
MQTT Java客戶端Eclipse paho實現資料的傳送和接收
MQTT(MQ Telemetry Transport)是IBM開發的一種網路應用層的協議 使用場景: 1、不可靠、網路頻寬小的網路 2、執行的裝置CPU、記憶體非常有限 特點: 1、基於釋出/訂閱模型的協議 2、他是二進位制協議,二進位制的特點就是緊湊、佔用
HttpURLConnection從客戶端向伺服器傳送Http請求以及伺服器響應全過程解析
下邊的總結對我幫助蠻大的~不僅用法瞭解,整個連線流程也要明白! 原文連結地址: http://www.blogjava.net/supercrsky/articles/247449.html 針對JDK中的URLConnection連線Servlet的問題,網上有雖然有所涉及,但是隻是說明了某一個或幾
java web獲取客戶端外網ip和所在區域
@參考文章1、@參考文章2、@參考文章3、@參考文章4,@之前同事的專案 controller @Controller @RequestMapping("/home") public class HomeController { @RequestMappin
Netty開發redis客戶端,Netty傳送redis命令,netty解析redis訊息
Netty開發redis客戶端,Netty傳送redis命令,netty解析redis訊息, netty redis ,redis RESP協議。redis客戶端,netty redis協議 我們可以使用redis-cli這個客戶端來操作redis,也可以使用window的命令列telnet連線redis。
Android 客戶端使用udp傳送請求並解析xml
1,UDP請求客戶端 package udp; /** * <author> cwj * <time> 2018/8/27 15:29 * <version> * <desc>UDP客戶端 **/ public class
Windows 的java客戶端實現上傳檔案到Linux的Hadoop叢集上(注意ip和埠是否一致)
我這幾天一直在學大資料,處於入門階段,然後老師的視訊中教學有用windows的java客戶端上傳檔案到Linux的Hadoop叢集, 但是這邊出BUG了一直上傳不上去,執行程式後一直沒反應。。。。弄了幾天(雖然這幾天在做前端專案~~~) 然後問群裡的大佬,他們說應該是ip和埠
kafka-0.10.0.1版本在java客戶端傳送資料接收不到
錯誤日誌: org.apache.kafka.common.errors.TimeoutException: Batch containing 100 record kafka版本:0.10.0.1 zookeeper版本: 3.4.5 產生的現象: 編寫好java
ES的java客戶端中SearchRequest和SearchResponse的序列化和反序列化
Elastcsearch官方提供了一個elasticsearch-rest-high-level-client,作者在寫bug的時候需要將其中的ActionRequest(子類包括SearchRequest、IndexRequest、UpdateRequest等)和Searc
服務端Http請求Request和response原理解析篇(1)
什麼是servlet? .Sun(oracle)公司制定的一種用來擴充套件Web伺服器功能的元件規範. 元件:在軟體開發行業,符合一定規範,實現部分功能,並且需要部署到容器中才能執行的軟體模組 容器:符合一定規範,提供元件執行環境的一個程式 什麼是HTTP協議? Hype
Java客戶端利用httpclient來同時上傳檔案和其他字串引數
1.客戶端程式碼如下: import java.io.File; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.nio.charse
Kafka : Kafka入門教程和JAVA客戶端使用
目錄 Kafka簡介 由Scala和Java編寫,Kafka是一種高吞吐量的分散式釋出訂閱訊息系統. 環境介紹 作業系統:centos6.5 kafka:1.0.1 zookeeper:3.4.6 術語介紹 Broker :
Socket通訊——C++伺服器端和Java客戶端
//更新 這件事可以用現有的序列化框架來做 比如 protobuf 一句話來說就是,C++和Java 通過socket進行通訊、資料傳輸,通過傳送“位元組流”即可。 位元組對於C++和java來說是通用的,但是傳輸的過程有許多問題需要注意,我為了弄清楚這個過程,查了一些資料
KafkaOffsetMonitor監控工具的安裝與引數說明(該方法避免了監控頁面內容無法顯示和Java客戶端消費者組無法監控等問題)
概述 一個小應用程式來監視kafka消費者的進度和它們的延遲的佇列。 KafkaOffsetMonitor是用來實時監控Kafka叢集中的consumer以及在佇列中的位置(偏移量)。 你可以檢視當前的消費者組,每個topic佇列的所有partition的消費情況。可以很快地知道
java實現客戶端向伺服器傳送檔案的操作
伺服器原始碼: import java.io.BufferedReader; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; impor
一、rabbitMQ的安裝和java客戶端使用
1. rabbitma入門 1.1 RabbitMQ的安裝 這裡可以看一下Rabbit的文件,每個版本依賴的erlang環境也是不一樣的 1.安裝erlang: # 安裝依賴,主要是ncurses-devel這個依賴 yum -y ins
公鑰和私鑰的含義,以及java客戶端和伺服器之間進行安全加解密的簡單實現
所謂公鑰和私鑰,一般是指在一個伺服器中,每個伺服器各自有自己的公鑰和私鑰,私鑰絕對保密,不可洩露,而公鑰會提供給可以被訪問的伺服器知曉。 如果serverA和serverB進行資料互動 那麼ServerA會知道B的公鑰 在傳送資料時 資料內容使用B的公鑰加密,傳送給B 數字
使用 kafka 的java客戶端進行訊息的傳送與接收通訊操作
kafka的傳送端: package com.zwz.test; import kafka.Kafka; import org.apache.kafka.clients.producer.KafkaProducer; import org.apache.kafka.cli
Linux系統中KafKa安裝和使用方法 java客戶端連線kafka
kafka linux單機安裝1 下載並安裝kafka# tar zxvf kafka_2.12-1.1.0tgz # mv kafka_2.12-1.1.0 /usr/local/kafka # cd /usr/local/kafka2 啟動服務執行kafka需要使用Zo