当前位置: 首页 > backend >正文

JAVA请求vllm的api服务报错Unsupported upgrade request、 Invalid HTTP request received.

环境:

vllm 0.8.5

java 17

Qwen3-32B-FP8

问题描述:

JAVA请求vllm的api服务报错Unsupported upgrade request、 Invalid HTTP request received.

WARNING:  Unsupported upgrade request.
INFO:      - "POST /v1/chat/completions HTTP/1.1" 400 Bad Request
WARNING:  Invalid HTTP request received.

在这里插入图片描述
服务端:
在这里插入图片描述

解决方案:

1.原来请求脚本

import okhttp3.*;public class VllmApiDemo (public static void main(String[] args) throws Exception {OkHttpClient client = new OkHttpClient();String json = "{"+ "\"model\": \"Qwen3-32B-FP8\","+ "\"messages\": [{\"role\": \"user\", \"content\": \"你好\")]"+ "}";RequestBody body = RequestBody.create(json, MediaType.parse("application/json"));Request request = new Request.Builder().url("http://192.168.16.2:8700/v1/chat/completions").post(body).build();Response response = client.newCall(request).execute();System.out.println(response.body().string());}
}

错误日志分析:

WARNING:  Unsupported upgrade request.
INFO:      - "POST /v1/chat/completions HTTP/1.1" 400 Bad Request
WARNING:  Invalid HTTP request received.

服务端提示请求格式有误,导致 400 错误。 Java 代码,有几处明显的语法和格式问题,可能导致请求体JSON格式不正确,服务端无法解析:


1.代码语法错误

  • 第一行 mport okhttp3.*; 应为 import okhttp3.*;
  • 类定义括号用错了,应该是 { 而不是 (
  • JSON 字符串中,messages 数组结尾用了 )],应为 }]
  • JSON 字符串最后的引号关闭处格式有问题

2. 正确的 JSON 请求体应为

{"model": "Qwen3-32B-FP8","messages": [{"role": "user","content": "你好"}]
}

3. 修正后的 Java 示例代码

import okhttp3.*;public class VllmApiDemo {public static void main(String[] args) throws Exception {OkHttpClient client = new OkHttpClient();String json = "{"+ "\"model\": \"Qwen3-32B-FP8\","+ "\"messages\": [{\"role\": \"user\", \"content\": \"你好\"}]"+ "}";RequestBody body = RequestBody.create(json, MediaType.parse("application/json"));Request request = new Request.Builder().url("http://192.168.16.2:8700/v1/chat/completions").post(body).build();Response response = client.newCall(request).execute();System.out.println(response.body().string());}
}

4. 重点说明

  • JSON格式正确,数组和对象括号匹配
  • 类定义和import语句正确
  • 请求地址和模型名称确认无误
  • 请求体内容用 MediaType.parse("application/json") 指定媒体类型

4. 建议调试步骤

  • 你可以先用 curl 命令测试接口,确认服务端正常响应,例如:
curl -X POST http://192.168.16.2:8700/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{"model":"Qwen3-32B-FP8","messages":[{"role":"user","content":"你好"}]}'
  • 确认 curl 成功返回后,再运行 Java 程序。

http://www.xdnf.cn/news/7274.html

相关文章:

  • 一个由微软开源的 Python 工具,用于将多种文件格式转换为 Markdown 格式
  • 【框架安装】win10 配置安装GPU加速的tensorflow和keras教程
  • 3.QMainWindow菜单栏menu bar和工具栏tool bars
  • 分布式事务
  • SID 2025上的天马,用“好屏”技术重构产业叙事
  • 【NLP】36. 从指令微调到人类偏好:构建更有用的大语言模型
  • [Spring Boot]整合Java Mail实现Outlook发送邮件
  • 《AI高效运维体系建设创新》技术连载(四)
  • 数据库连接问题排查全攻略:从服务状态到网络配置的深度解析
  • PCL点云库点云数据处理入门系列教材目录(2025年5月更新....)
  • HttpMessageConverter 的作用是什么? 它是如何实现请求体到对象、对象到响应体的自动转换的(特别是 JSON/XML)?
  • Qwen3 - 0.6B与Bert文本分类实验:深度见解与性能剖析
  • 遨游科普:三防平板是什么?应用在什么场景?
  • Perl数据库测试实战:从基础到高级的完整解决方案
  • 视觉-和-语言导航的综述:任务、方法和未来方向
  • Python编程从入门到实践 PDF 高清版
  • 【深度学习基础】损失函数与优化算法详解:从理论到实践
  • A3B和AWQ 是什么;Safetensors 是什么?
  • 解决 Linux Bash 脚本因换行符问题导致的 “bash^M: No such file or directory“ 错误
  • 在CentOS系统上部署GitLabRunner并配置CICD自动项目集成!
  • ubuntu下配置vscode生成c_cpp_properties.json
  • 【大数据】MapReduce 编程-- PageRank--网页排名算法,用于衡量网页“重要性”-排序网页
  • 展锐Android14及更新版本split_build编译方法
  • 百度OCR:证件识别
  • Python将Excel单元格某一范围生成—截图(进阶版—带样式+批量+多级表头)
  • 《黑马前端ajax+node.js+webpack+git教程》(笔记)——ajax教程(axios教程)
  • 确保高质量的音视频通话,如何最大化利用视频带宽
  • win10 上删除文件夹失败的一个原因:sqlYog 备份/导出关联了该文件夹
  • 【QT】一个界面中嵌入其它界面(二)
  • 星云智控v1.0.0产品发布会圆满举行:以创新技术重构物联网监控新生态