Java 无法在Postman中获取HTTP调用的响应

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

我正在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.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中是不可变的。但是您的邮递员可能没有“接收”响应,因为它的格式不正确或缺少一些信息。