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

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 程序。

相关文章:

  • CAN总线采样点不一致的危害
  • chrome因使用selenium无图模式导致不再加载图片问题解决
  • 【Java开发--对象converter转换规范实践】
  • 面试点补充
  • PH热榜 | 2025-05-18
  • 详细总结和讲解redis的基本命令
  • 深度学习 TensorFlow vs PyTorch
  • 408 笔记
  • 系统安全及应用学习笔记
  • 12代处理器关闭小核提高win10系统更多性能方法
  • el-upload图片设置了url不显示问题
  • Cryosparc里头restack的妙用
  • ArcGIS Pro 3.4 二次开发 - 内容
  • 8254计数器应用实验
  • 25.5.19 强化学习笔记1
  • 【Linux网络】多路转接epoll
  • 留给王小川的时间不多了
  • Java大数据机器学习模型在金融衍生品风险建模中的创新实践
  • 鸿蒙 系统-安全-程序访问控制-应用权限管控
  • 提高 iOS 调试效率的实战经验:日志查看、崩溃分析与性能监控工具推荐(含 KeyMob)
  • 河南通报部分未检疫生猪流入:立案查处,涉案猪肉被封存
  • 这个死亡率第一的“老年病”,正悄悄逼近年轻人
  • 国家统计局:4月全国规模以上工业增加值同比增长6.1%
  • 蒲慕明院士:好的科普应以“质疑、讨论公众关切的科学问题”为切入点
  • 病重老人取钱在银行门口去世,家属:已协商一致
  • 小米汽车机盖门陷谈判僵局,车主代表称小米表示“退订会造成崩塌”