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

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.lryc.cn/news/2379739.html

相关文章:

  • 基于 CSS Grid 的网页,拆解页面整体布局结构
  • 华为云Astro轻应用创建业务对象(BO)的概念梳理
  • 利用systemd启动部署在服务器上的web应用
  • ArkUI Tab组件开发深度解析与应用指南
  • psotgresql18 源码编译安装
  • 虚幻引擎5-Unreal Engine笔记之Pawn与胶囊体的关系
  • python创建flask项目
  • Vue环境下数据导出PDF的全面指南
  • Linux中的DNS的安装与配置
  • linux服务器与时间服务器同步时间
  • 【数据结构篇】排序1(插入排序与选择排序)
  • 《Linux服务与安全管理》| DNS服务器安装和配置
  • 【NLP】34. 数据专题:如何打造高质量训练数据集
  • Notepad++ 学习(三)使用python插件编写脚本:实现跳转指定标签页(自主研发)
  • Stable Diffusion 学习笔记02
  • python:pymysql概念、基本操作和注入问题讲解
  • Scala语言基础与函数式编程详解
  • 类的加载过程详解
  • 机器学习-人与机器生数据的区分模型测试 - 模型融合与检验
  • 机器学习 day03
  • 《社交应用动态表情:RN与Flutter实战解码》
  • 嵌入式软件--stm32 DAY 6 USART串口通讯(下)
  • 问题处理——在ROS2(humble)+Gazebo+rqt下,无法显示仿真无人机的相机图像
  • 69、微服务保姆教程(十二)容器化与云原生
  • 朱老师,3518e系列,第六季
  • ElasticSearch-集群
  • 一文掌握工业相机选型计算
  • 记录心态和工作变化
  • 深入理解 TypeScript 中的 unknown 类型:安全处理未知数据的最佳实践
  • LabVIEW机械振动信号分析与故障诊断