我正在使用 POSTMAN 来测试我用 JAVA 编写的 api。我能够访问 api 本身(我在调试时看到它),但我发送的 JSON 对象被接收为空。执行结束时,会发生空打印。
我的Java代码:
@POST
@Path("admin/save'")
public Response printInputText(@Context SecurityContext sc,InputStream incomingData) {
String requestText = getStringFromInputStream(incomingData);
System.out.println(requestText);
if(requestText.equals("")){
return Response.status(Status.INTERNAL_SERVER_ERROR).build();
}
return Response.status(Status.OK).build();
}
public static String getStringFromInputStream(InputStream is) {
BufferedReader br = null;
StringBuilder sb = new StringBuilder();
String line;
try {
br = new BufferedReader(new InputStreamReader(is));
while ((line = br.readLine()) != null) {
sb.append(line + System.lineSeparator());
}
} catch (IOException e) {
e.getMessage();
e.printStackTrace();
} finally {
if (br != null) {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return sb.toString();
}
curl(稍微更改了网址,但我正在访问该网址,所以这不是问题):
curl --location --request POST 'http://uri.com/ui/rest/admin/save' \
--标题“授权:基本 QzUzMDY3Nzc6QWxlWEZlckczMg==”\
--header '内容类型:application/json' \
--数据原始'{ “核心价值”, "nextKey": "nextVal", “lastKey”:“lastVal” }'
尝试以
"data:"
为前缀并以 "\n\n"
结尾,如下所示:
async def generate_stream(request: Request):
async def stream_results():
for i, token in enumerate(['a', 'b', 'c']):
event = {
"token": {
"id": i,
"text": token,
"logprob": 0.0,
"special": None
}
}
event_data = "data:" + json.dumps(event) + "\n\n"
yield event_data.encode("utf-8")
return StreamingResponse(stream_results(), media_type='text/event-stream')