@@ -195,14 +195,24 @@ echo -e "${YELLOW} 接收流式响应...${NC}"
195195TEMP_FILE=$( mktemp)
196196START_TIME=$( date +%s)
197197
198- curl -s -X POST http://localhost:$PROXY_PORT /$SESSION_ID /v1/chat/completions \
198+ # 执行流式请求并捕获 HTTP 状态码
199+ HTTP_CODE=$( curl -s -w " %{http_code}" -o " $TEMP_FILE " \
200+ -X POST http://localhost:$PROXY_PORT /$SESSION_ID /v1/chat/completions \
199201 -H " Content-Type: application/json" \
200- -d ' {"stream": true, "messages": [{"role": "user", "content": "Hello"}]}' \
201- -o " $TEMP_FILE "
202+ -d ' {"stream": true, "messages": [{"role": "user", "content": "Hello"}]}' )
202203
203204END_TIME=$( date +%s)
204205DURATION=$(( END_TIME - START_TIME))
205206
207+ # 检查 HTTP 状态码
208+ if [ " $HTTP_CODE " != " 200" ]; then
209+ echo -e " ${RED} ✗${NC} HTTP 请求失败,状态码: $HTTP_CODE "
210+ echo " 响应内容:"
211+ cat " $TEMP_FILE "
212+ rm -f " $TEMP_FILE "
213+ exit 1
214+ fi
215+
206216# 检查响应内容
207217CHUNK_COUNT=$( grep -c " ^data: " " $TEMP_FILE " || true)
208218HAS_DONE=$( grep -q " \[DONE\]" " $TEMP_FILE " && echo " yes" || echo " no" )
@@ -213,17 +223,23 @@ if [ "$CHUNK_COUNT" -gt 0 ] && [ "$HAS_DONE" = "yes" ]; then
213223 echo " 传输时间: ${DURATION} 秒"
214224 echo " 已接收完整标记: ✓"
215225
216- # 提取并显示部分内容
226+ # 提取并显示部分内容(使用更安全的方式)
217227 echo " "
218228 echo " 📄 响应示例(前3行):"
219- head -n 3 " $TEMP_FILE " | while read line; do
229+ # 临时禁用 set -e 以避免 jq 错误导致脚本退出
230+ set +e
231+ head -n 3 " $TEMP_FILE " | while IFS= read -r line; do
220232 if [[ " $line " == data:* ]]; then
221- CONTENT=$( echo " $line " | sed ' s/^data: //' | jq -r ' .choices[0].delta.content // empty' 2> /dev/null || echo " " )
222- if [ ! -z " $CONTENT " ]; then
233+ # 移除 "data: " 前缀并尝试解析 JSON
234+ json_content=" ${line# data: } "
235+ CONTENT=$( echo " $json_content " | jq -r ' .choices[0].delta.content // empty' 2> /dev/null)
236+ # 只在成功解析且非空时输出
237+ if [ $? -eq 0 ] && [ -n " $CONTENT " ] && [ " $CONTENT " != " null" ]; then
223238 echo " $CONTENT "
224239 fi
225240 fi
226241 done
242+ set -e
227243else
228244 echo -e " ${RED} ✗${NC} 流式请求转发失败"
229245 echo " 数据块数量: $CHUNK_COUNT (期望 > 0)"
0 commit comments