[英]How can I send an HTTP request using HTTP/2 over TLS? (Java 11 HttpClient)
[英]how to send xml over HTTP Request using telnet in java
我正在嘗試通過Java中的telnet發送HTML POST請求,我必須發送一些XML內容。 但是,當我嘗試在Java中實現時,出現“連接重置”錯誤。 但是,當我通過putty(unix)執行此操作時,我得到的響應xml也正確。
我使用的Java程序:(導致連接重置錯誤)
public class Telnet {public static void main(String[] args) throws Exception {
Socket socket = new Socket("hostname", 10020);
String xmled = "<?xml version=1.0?><methodCall><methodName>GetVoucherDetails</methodName><params><param><value><struct><member><name>serialNumber</name><value><string>1038291567</string></value></member><member><name>networkOperatorId</name><value><string>vno2</string></value></member></struct></value></param></params></methodCall>";
System.out.println("Params: " + xmled);
try {
Writer out = new OutputStreamWriter(socket.getOutputStream(), "UTF-8");
out.write("POST /someContext HTTP/1.1\r\n");
out.write("Accept: text/xml\r\n");
out.write("Connection: close\r\n");
out.write("Content-Length: 489\r\n");
out.write("Content-Type: text/xml\r\n");
out.write("Host: ws2258:10010\r\n");
out.write("User-Agent: ADM/2.4/6.2\r\n");
out.write("Authorization: Basic cHBtc3VzZXI6dnNfJF9wcG11NWVy\r\n");
out.write(xmled);
out.write("\r\n");
out.flush();
InputStream inputstream = socket.getInputStream();
InputStreamReader inputstreamreader = new InputStreamReader(inputstream);
BufferedReader bufferedreader = new BufferedReader(inputstreamreader);
String string = null;
string = bufferedreader.readLine();
System.out.println(string);
while ((string = bufferedreader.readLine()) != null) {
System.out.println("Received " + string);
}
} catch(Exception e) {
e.printStackTrace();
} finally {
socket.close();
}
}
}
請給我一些建議,我是套接字編程的新手。
在您的Socket構造函數中,您是要放入端口10020嗎? 除非您的Web服務器正在偵聽端口10020,否則HTTP表示端口80。
我終於找到了解決這個問題的方法。 最后,修復很簡單。 我們必須在一行中發送整個XML內容,而不是分成多行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.