gpt4 book ai didi

java - 协议(protocol)消息包含无效标签 0

转载 作者:太空宇宙 更新时间:2023-11-04 10:48:59 26 4
gpt4 key购买 nike

我的目标是创建一个实时服务警报源,并将其发送到我用 Java 使用 HTTP post 请求创建的服务器。我所做的第一步是创建此处发布的示例警报源的副本,看来我成功地做到了这一点,因为我能够将其打印出来。 https://developers.google.com/transit/gtfs-realtime/examples/alerts

我所做的下一步是创建 HTTP 连接并通过 POST 请求发送提要。这是我的客户端代码中的内容,这里的示例是提要名称。

String url = "https://localhost:8080";
URL obj = new URL(url);
HttpsURLConnection con = (HttpsURLConnection) obj.openConnection();
//add reuqest header
con.setRequestMethod("POST");
con.setRequestProperty("User-Agent", "Mozilla/5.0");
con.setRequestProperty("Accept-Language", "en-US,en;q=0.5");
con.setRequestProperty("Content-Type", "application/x-protobuf");
con.setDoOutput(true);
DataOutputStream wr = new DataOutputStream(con.getOutputStream());
example.build().writeDelimitedTo(wr);
wr.flush();
wr.close();

到目前为止,我的服务器代码就是这样。

ServerSocket server = new ServerSocket(8080); 
System.out.println("Listening for connection on port 8080 ....");
while (true) {
try (Socket socket = server.accept()) {
FeedMessage feed = FeedMessage.parseDelimitedFrom(socket.getInputStream());
Date today = new Date();
String httpResponse = "HTTP/1.1 200 OK\r\n\r\n" + today;
socket.getOutputStream().write(httpResponse.getBytes("UTF-8"));
}
}

这里的问题是我在服务器端收到包含无效标签 0 的协议(protocol)消息。我想要一些帮助来尝试解决这个问题。也许我没有正确解析它。

更新#2

我尝试解析 HTTP header 以获取有效负载,就像评论所说的那样。但我的代码挂起,并且在终端上打印标题的输出看起来是序列化的。

    DataInputStream isr = new DataInputStream(socket.getInputStream());
Reader reader = new InputStreamReader(isr);
BufferedReader reader2 = new BufferedReader(reader);
String line = reader2.readLine();
System.out.println("get lines");
while (!line.isEmpty()) {
System.out.println(line);
line = reader2.readLine();
}

最佳答案

您正在服务器上处理原始套接字,但有效负载被编码在 http 请求正文中。您需要将 http 请求解析为有效负载,并且当您只有正文时:将其发送到 protobuf。现在,您将 http header 发送到 protobuf,这是没有意义的。这可能意味着解析到 \r\n\r\n,但如果您可以使用内容长度 header ,将会有所帮助,如果您可以使用预构建的 http 库,那就更好了。

关于java - 协议(protocol)消息包含无效标签 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48046131/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com