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.

JAVA请求vllm的api服务报错Unsupported upgrade request、 Invalid HTTP request received._第1张图片
服务端:
在这里插入图片描述

解决方案:

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

你可能感兴趣的:(人工智能,JAVA,java,http,开发语言,vllm,Qwen3-32B-FP8)