You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Julia中通过HTTP.request调用TexSmart HTTP API?

问题

我尝试调用腾讯TexSmart HTTP API,输入需为特定结构的字典。参考API文档中的Python示例编写了Julia的HTTP.request代码,但未获得有效响应,仅返回内容长度为0的Response。现寻求正确实现方式,也可接受使用PyCall或ccall的方案。

输入字典结构如下:

Dict("str" => "text you want to analyze",
     "options"=> Dict(      "input_spec"=>Dict("lang"=>"auto"),
                              "word_seg"=>Dict("enable"=>true),
                           "pos_tagging"=>Dict("enable"=>true,
                                          "alg"=>"log_linear"),
                                   "ner"=>Dict("enable"=>true,
                                          "alg"=>"fine.std"),
                     "syntactic_parsing"=>Dict("enable"=>false),
                                   "srl"=>Dict("enable"=>false)),
      "echo_data"=>Dict("request_id"=>12345)
                     )

其中"options"和"echo_data"字段为可选,可忽略。

我尝试的Julia代码:

HTTP.request("POST", "https://texsmart.qq.com/api", 
[codeunits(json(Dict("str"=>"He stayed in San Francisco.")))])

API文档中的Python示例:

import json
import requests
obj = {"str": "he stayed in San Francisco."}
req_str = json.dumps(obj).encode()
url = "https://texsmart.qq.com/api"
r = requests.post(url, data=req_str)
r.encoding = "utf-8"
print(r.text)

解决方案

一、正确的Julia HTTP请求实现

你之前的代码错误在于请求头与请求体的传递方式不符合HTTP.request的参数规则,且未指定必要的Content-Type头。以下是修正后的代码:

using HTTP, JSON3

# 构造请求数据,可按需添加options/echo_data字段
data = Dict(
    "str" => "He stayed in San Francisco."
)

# 转换为JSON格式字符串
json_payload = JSON3.write(data)

# 发送POST请求,必须指定Content-Type头
response = HTTP.request(
    "POST",
    "https://texsmart.qq.com/api",
    ["Content-Type" => "application/json"],
    json_payload
)

# 解析并打印响应结果
result = JSON3.read(response.body)
println(result)

二、使用PyCall调用Python的requests库

如果更熟悉Python的实现逻辑,可以通过PyCall直接复用requests库完成请求:

using PyCall

# 导入Python依赖库
requests = pyimport("requests")
json = pyimport("json")

# 构造请求数据
obj = Dict("str" => "He stayed in San Francisco.")
req_str = json.dumps(obj).encode()

# 发送请求并处理响应
r = requests.post("https://texsmart.qq.com/api", data=req_str)
r.encoding = "utf-8"
println(r.text)

三、关键注意事项

  • 必须添加Content-Type: application/json请求头,否则API无法正确解析JSON格式的请求体。
  • 若使用完整的options参数,直接将对应字典结构加入请求数据即可,API会自动应用对应的分析配置。
  • 确保Julia环境已安装依赖包:Pkg.add(["HTTP", "JSON3"])(或使用JSON包替代JSON3)。

内容的提问来源于stack exchange,提问作者Ethan Leonard

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 06:43:14