HTTPRequest[url]
表示特定 URL 的一个 HTTP 请求.
HTTPRequest[assoc]
表示从关联 assoc 的成分中创建的一个 HTTP 请求.
HTTPRequest[url,assoc]
表示带有像 assoc 给出的页眉这样的额外元素的特定 URL 的一个 HTTP 请求.
HTTPRequest
HTTPRequest[url]
表示特定 URL 的一个 HTTP 请求.
HTTPRequest[assoc]
表示从关联 assoc 的成分中创建的一个 HTTP 请求.
HTTPRequest[url,assoc]
表示带有像 assoc 给出的页眉这样的额外元素的特定 URL 的一个 HTTP 请求.
更多信息和选项
- HTTPRequest 给出 HTTP 请求的一个符号表达式;并不执行该请求.
- 在 HTTPRequest[url] 中, url 可以是字符串、URL 对象或云对象.
- URL 也可以通过给出关联中的下列成分指定:
-
"Scheme" URL 方案 "User" 用户信息 "Domain" 域名或主机 "Port" 端口号(整数) "Path" 路径列表或字符串 "Query" 查询字符串或参数-值对列表 - 下列额外条目也可以在关联中给出:
-
Method "GET" 用于 HTTP 请求的方法 "Body" "" 要发送的消息主体的内容 "ContentType" Automatic 请求的内容类型页眉 "Username" "" 用于请求的用户名 "Password" "" 用于请求的密码 "Cookies" Automatic 要送至服务器的缓存内容 "UserAgent" Automatic 要发送的用户代理字符串 "Headers" {} 要发送给服务器的页眉列表 - "Body" 的设置可以有下列形式;
-
"string" 要发送的字符串 ByteArray[…] 要发送的字节数组 File[…] 要发送的文件 {b1,b2,b3,…} 要发送的字节列表 {"par1""val1","par2""val2",…} 要发送的 URL 编码参数和值列表 {"par1"{"val11",…},…} 与一个参数相关联的多个值的列表 <|"key1"val1,"key2"val2,…|> 参数和值列表的其他形式 {"par1"File[…],"par2"File[…],…} 带有多部分编码(multipart encoding)的待发送文件 {"par1"assoc1,…} 有对各部分详细说明的多部分编码 - 多部分编码中各部分的详细说明以与下列元素的关联形式给出:
-
"Content" 字符串、字节数组、文件对象等形式的内容 "Name" 指定给各部分的名称 "MIMEType" 指定给各部分的 MIME 类型 - "Cookies"->Automatic 设置指定应该发送对应于 url 域的 $Cookies 中的缓存内容(Cookie). "Cookies" 也可以给出表示这些缓存内容的关联的显式列表.
- "Headers" 的设置可以是一个规则列表或一个关联.
- 默认的 "UserAgent" 通常是 "Wolfram HTTPClient xxxx",其中 xxxx 是版本号.
- HTTPRequest 支持下列选项:
-
CharacterEncoding Automatic 已发送字符串的字符编码 CookieFunction Automatic 要应用于收到的各缓存内容的函数 FollowRedirects True 是否遵循 HTTP 的重定向 Interactive True 是否允许交互式的认证对话 TimeConstraint Infinity 等待响应的时间 VerifySecurityCertificates True 是否合适 SSL 安全证书 - 设置 CharacterEncoding->"enc" 指定了出现在请求中的所有字符串都应该在发送给服务器前通过 enc 进行编码.
- 设置 CharacterEncoding->None 指定了字符串发送给服务器之前不进行任何改变.
- 通过 CharacterEncoding->Automatic,如果指定,编码将从 "ContentType" 元素中取出;否则编码是 "UTF8".
- TimeConstraint->t 允许连接到 HTTP 请求中指定的 URL 并从中读取使用至多 t 秒.
- TimeConstraint-><|"Connecting"->tc,"Reading"->tr|> 为到 URL 的连接并从中读取指定不同的超时设定.
- HTTPRequest[…]["prop"] 提取 HTTP 请求的 prop 属性值.
- 包括所有成分和额外元素在内的可能属性还有:
-
"Body" 作为字符串的请求主体 "BodyByteArray" 作为 ByteArray 对象的请求的原始主体 "BodyBytes" 作为字节值列表的请求的原始主体 "FormRules" 请求中所有形式的元素的规则 "PathString" 作为字符串的完整路径 "QueryString" 完整的查询字符串 "AbsolutePath" 包括方案和域的作为字符串的完整路径 "AbsoluteDomain" 包括方案的作为字符串的完整域 "Properties" 所有可能属性的列表 "PropertyAssociation" 给出所有属性值的关联
范例
打开所有单元 关闭所有单元基本范例 (1)
定义一个 HTTPRequest:
req = HTTPRequest["http://www.wolframalpha.com/"]通过 URLRead 获取一个 HTTPResponse:
URLRead[req]req[{"Scheme", "Domain", Method}]范围 (2)
HTTPRequest[<|"Scheme" -> "http", "Domain" -> "www.wolframalpha.com", "Query" -> {"i" -> "200 usd in eur"}|>]改变给定 URL 的查询参数和方案:
HTTPRequest[URL["http://www.wolframalpha.com/"], <|"Query" -> {"i" -> "200 usd in eur"}, "Scheme" -> "https"|>]HTTPRequest["http://example.com", <|"Query" -> {"a" -> "1", "a" -> "2"}|>]HTTPRequest["http://example.com", <|"Query" -> {"a" -> {"1", "2"}}|>]作用于关联时在列表内对参数分组是很有用的,这是因为它们不允许重复的键:
HTTPRequest["http://example.com", <|"Query" -> <|"a" -> {"1", "2"}|>|>]如果没有指定 Method,则自动使用 "GET":
url = CloudDeploy[Delayed[HTTPRequestData[{"Method", "FormRules"}], "WL"]];URLRead[HTTPRequest[url], "Body"]req = HTTPRequest[
url, <|
Method -> "POST",
"Body" -> "x=2",
"ContentType" -> "application/x-www-form-urlencoded"
|>
];
URLRead[req, "Body"]file = Export[CreateFile[], "x=2", "String"];req = HTTPRequest[
url, <|
Method -> "POST",
"Body" -> File[file], "ContentType" -> "application/x-www-form-urlencoded"
|>
];
URLRead[req, "Body"]要发送在主体为 URL 编码的 HTTP 请求的话,可以只发送一个值列表. 如果没有指定 Method,则自动使用 "POST":
req = HTTPRequest[url, <|"Body" -> {"x" -> {1, 2, 3}}|>];
URLRead[req, "Body"]image = FindFile["ExampleData/Ocelot.jpg"];
req = HTTPRequest[url, <|"Body" -> {"image" -> File[image]}|>];
URLRead[req, "Body"]要想发送更复杂的文件规格,可以使用 Association:
req = HTTPRequest[url, <|
"Body" -> {"image" -> <|"Content" -> "hello world", "MIMEType" -> "text/plain", "FileName" -> "mycustomname.txt"|>}
|>];
URLRead[req, "Body"]Association 中的内容可以是字符串、 ByteArray 或 File:
image = FindFile["ExampleData/Ocelot.jpg"];
req = HTTPRequest[url, <|
"Body" -> {"image" -> <|"Content" -> File[image], "MIMEType" -> "image/jpeg", "FileName" -> "my-custom-ocelot.jpeg"|>, "bytes" -> <|"Content" -> ToCharacterCode["hello world"], "FileName" -> "my-inmemory-file-upload.txt", "MIMEType" -> "text/plain"|>, "string" -> "just a string"}
|>];
URLRead[req, "Body"]选项 (4)
VerifySecurityCertificates (1)
CookieFunction (1)
TimeConstraint (1)
属性和关系 (2)
完全支持 File 和 CloudObject:
HTTPRequest[URL["http://wolfram.com"], <|"Query" -> {"x" -> {1, 2, 3}}|>]HTTPRequest[CloudObject[], <|"Query" -> {"x" -> {1, 2, 3}}|>]使用 URLDownload 在文件中存储输出:
URLDownload[HTTPRequest[URL["http://wolfram.com"]]]通过 Import 或 URLExecute 导入请求:
api = CloudDeploy[APIFunction[{"text" -> "String" -> "Hello"}, ImageResize[Graphics[{Circle[], Text[Style[#text, 40], {0, 0}]}], 100]&, "PNG"]];req = HTTPRequest[api];Import[req]URLExecute[req, {"text" -> "Ciao"}]可能存在的问题 (1)
网络请求出错可能有几个原因;系统会发出信息帮助你确定可能的原因,而且会返回一个 Failure 对象:
response = URLRead[HTTPRequest["http://notanurl.com"]]Failure 对象含有 HTTPRequest 对象:
response[[2, "HTTPRequest"]]巧妙范例 (1)
Import 一个 APIFunction:
api = CloudDeploy[APIFunction["x" -> "Country", GeoGraphics[#x]&, "PNG"]];
req = HTTPRequest[api, <|"Query" -> {"x" -> "France"}|>];
Import[req]相关的工作流程
- 从外部程序调用 Wolfram API ▪
- 部署网络 API
文本
Wolfram Research (2016),HTTPRequest,Wolfram 语言函数,https://reference.wolfram.com/language/ref/HTTPRequest.html (更新于 2025 年).
CMS
Wolfram 语言. 2016. "HTTPRequest." Wolfram 语言与系统参考资料中心. Wolfram Research. 最新版本 2025. https://reference.wolfram.com/language/ref/HTTPRequest.html.
APA
Wolfram 语言. (2016). HTTPRequest. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/HTTPRequest.html 年
BibTeX
@misc{reference.wolfram_2026_httprequest, author="Wolfram Research", title="{HTTPRequest}", year="2025", howpublished="\url{https://reference.wolfram.com/language/ref/HTTPRequest.html}", note=[Accessed: 05-October-2026]}
BibLaTeX
@online{reference.wolfram_2026_httprequest, organization={Wolfram Research}, title={HTTPRequest}, year={2025}, url={https://reference.wolfram.com/language/ref/HTTPRequest.html}, note=[Accessed: 05-October-2026]}