1. 程式人生 > >java客戶端http報文傳送和解析的詳細程式碼

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客戶中SearchRequestSearchResponse的序列化反序列化

Elastcsearch官方提供了一個elasticsearch-rest-high-level-client,作者在寫bug的時候需要將其中的ActionRequest(子類包括SearchRequest、IndexRequest、UpdateRequest等)和Searc

服務Http請求Requestresponse原理解析篇(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