Java 无法在Postman中获取HTTP调用的响应
我正在java中的套接字上接收HTTP调用。我用HTTP从postman发送小数据,并且能够在java应用程序中接收它,但是postman中没有收到java发送的响应 以下是我的Java终端代码:Java 无法在Postman中获取HTTP调用的响应,java,api,http,Java,Api,Http,我正在java中的套接字上接收HTTP调用。我用HTTP从postman发送小数据,并且能够在java应用程序中接收它,但是postman中没有收到java发送的响应 以下是我的Java终端代码: import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.BufferedWriter; import java.io.OutputStream; import java.io.Out
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedWriter;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.URLEncoder;
import java.net.UnknownHostException;
public class MainClass {
public static void main(String args[]) {
ServerSocket scket;
Socket clientSocket;
byte inFromInde[] = new byte[1000];
int read_size_inde = 0;
try{
scket = new ServerSocket(7502);
scket.setReuseAddress(true);
clientSocket = scket.accept();
System.out.println("Connection accepted");
BufferedInputStream inputFromInde = new BufferedInputStream(clientSocket.getInputStream());
read_size_inde = inputFromInde.read(inFromInde,0,1000);
String str = new String(inFromInde);
System.out.println(str);
BufferedOutputStream outputToInde = new BufferedOutputStream(clientSocket.getOutputStream());
OutputStream output = clientSocket.getOutputStream();
String response = "HTTP/1.1 200 OK\r\n";
response = response = "Date: Fri, 04 May 2001 20:08:11 GMT\r\n";
response = response + "Server: Sanjits Server\r\n";
response = response + "Connection: close\r\n";
response = "Hi Hope you are doing good";
byte[] bytes = response.getBytes();
output.write(bytes);
output.flush();
output.close();
scket.close();
clientSocket.close();
}
catch(Exception e){
System.out.println("Exception is bind Failed");
}
}
}
我怎样才能得到邮递员的回复。你有几件事要纠正 首先,您将用
response = response = "Date: Fri, 04 May 2001 20:08:11 GMT\r\n";
....
response = "Hi Hope you are doing good";
您可能希望像这样连接字符串
response = response + "text";
或
或者使用concat方法
response = response.concat("text");
您的另一个问题与您的响应格式有关。根据HTTP规范,响应中的头和体应该由CRLF()分隔 为了符合要求,必须使用CRLF终止标题部分,因此必须添加额外的\r\n(如VGR所述) 所以你的反应大楼应该是这样的
String response = "HTTP/1.1 200 OK\r\n"
.concat("Date: Fri, 04 May 2001 20:08:11 GMT\r\n")
.concat("Server: Sanjits Server\r\n")
.concat("Connection: close\r\n")
.concat("\r\n") //additional CRLF!
.concat("Hi Hope you are doing good");
你有几件事要纠正 首先,您将用
response = response = "Date: Fri, 04 May 2001 20:08:11 GMT\r\n";
....
response = "Hi Hope you are doing good";
您可能希望像这样连接字符串
response = response + "text";
或
或者使用concat方法
response = response.concat("text");
您的另一个问题与您的响应格式有关。根据HTTP规范,响应中的头和体应该由CRLF()分隔 为了符合要求,必须使用CRLF终止标题部分,因此必须添加额外的\r\n(如VGR所述) 所以你的反应大楼应该是这样的
String response = "HTTP/1.1 200 OK\r\n"
.concat("Date: Fri, 04 May 2001 20:08:11 GMT\r\n")
.concat("Server: Sanjits Server\r\n")
.concat("Connection: close\r\n")
.concat("\r\n") //additional CRLF!
.concat("Hi Hope you are doing good");
您似乎有一个拼写错误正在删除HTTP响应行:
response=response=“Date:…”
注意存在两个=
赋值运算符。(然后,当程序执行response=“Hi Hope you doing good”
)时,您会删除响应行和所有标题。此外,在标题和正文之间必须有两个\r\n
序列。您似乎有一个拼写错误正在删除HTTP响应行:response=response=“Date:…”;
注意存在两个=
赋值运算符。(然后,当程序执行response=“Hi Hope you doing good”
)时,您会删除响应行和所有标题。此外,标题和正文之间必须有两个\r\n
序列。可能只是邮递员,但使用concat函数时,我会遇到套接字挂断错误(意思是响应时间太长了)。当我使用response+=时,效果很好though@mcdowellalex您是否分配了.concat()的结果对于变量?Concat不会更改字符串,但会返回一个新的连接字符串。ohhhh不,我没有。在这种情况下,我应该得到我分配的响应字符串是正确的吗?response=“some string”;response.Concat(“some more”);
应该只返回“some string”@mcdowellax,它将返回“some string”,是的。这是因为字符串在Java中是不可变的。但您的邮递员可能没有“接收”响应,因为它的格式不正确或缺少一些信息。可能只是邮递员,但在使用concat函数时,我会收到套接字挂起错误(意味着响应时间太长).当我使用response+=时,它工作得很好though@mcdowellalex是否已将.concat()的结果赋给变量?concat不会更改字符串,但会返回一个新的连接字符串。OHHHHH不,我没有。在这种情况下,我应该返回我赋给响应字符串正确的内容?response=“some string”;response.concat(“some more”);
应该只返回“some string”?@mcdowellax将返回“some string”,是的。这是因为字符串在Java中是不可变的。但是您的邮递员可能没有“接收”响应,因为它的格式不正确或缺少一些信息。