在“GET”HTTP 请求中使用 JSON我正在努力与我们的数据检索引擎进行交互。我可以使用这样的 POST 请求完美地提交工作:
request = 新的 HTTP 请求(
网址(“http://fc8tdbitmapconvs07:11111/daas/”),
方法(“发布”),
Json(加载文本文件(ctfn))
);
数据=请求<<发送;
“数据”包含来自服务器的响应,一切正常。
------------------------------------------
但是,当我尝试使用“GET”请求检查正在运行的作业的状态时,json 不会包含在对服务器的 HTTP 请求中:
尝试#1:
request2 = 新的 HTTP 请求(
url( "http://fc8tdbitmapconvs07:11111/daas/status/" ),
方法(“获取”),
headers( {"Content-Type:application/json"} ), // 添加自定义标头
Json(加载文本文件(ctfn2))
);
数据 2 = 请求 2 << 发送;
尝试#2
request2 = 新的 HTTP 请求(
url( "http://fc8tdbitmapconvs07:11111/daas/status/" ),
方法(“获取”),
headers( {"Content-Type:application/json"} ) // 添加自定义标头
);
request2 <数据 2 = 请求 2 << 发送;
在这两种情况下,JSON 都无法加载。标头信息可以很好地发送到服务器,但 JSON 应该在请求中的位置是空的。我错过了什么?
谢谢
回复:在“GET”HTTP 请求中使用 JSON此功能(在发送 JSON 时使用“GET”)应该在 JMP 15 中可用。
回复:在“GET”HTTP 请求中使用 JSON最后一件事(或 2)。工作编号等是否可以作为查询字符串参数传递(或者甚至可以将 JSON 嵌入到请求标头中)
和 2,一定要将带有“正文”的 get 添加到愿望清单中。这样我们就可以跟踪并在它出现时通知您。
谢谢。
-布莱恩
回复:在“GET”HTTP 请求中使用 JSON拜伦,
感谢你能这么快回复。我直接与 REST API 的开发人员合作,将 JSON 打包在 GET 请求中是他们记录的请求数据的方式。您是正确的,规范不明确,并且在 GET 请求中打包 JSON 是某些 CS 课程中教授的内容。在这种情况下,我们的想法是传入一个作业编号,它将返回一个指示作业尚未完成的代码(轮询和响应)或一个指示作业完成的代码、数据文件名和包含这些文件的 zip 文件.如果您能在 JMP 15 中找到一些东西,那将非常有帮助。
回复:在“GET”HTTP 请求中使用 JSON阅读 HTTP 规范后,我发现不鼓励使用 GET 发送数据,服务器通常会忽略它。
我在 stackoverflow 上找到了这个讨论,它链接到相关的 HTTP 规范。
这个说法正确吗? HTTP GET 方法始终没有消息体
它基本上对某些自定义 web 服务实现可能会使用它很重要,而且规范对此非常模糊。
如果仍然需要,也许我可以为 JMP 15 做点什么。
还有其他途径可以与此服务互动吗?
回复:在“GET”HTTP 请求中使用 JSONJSON 是否嵌入在请求标头中? (Dropbox、Onedrive 和许多其他公司都这样做)
HTTP 请求中的 JSON 参数用在 POST/PATCH/PUT 中,其中内容以 JSON 内容类型发送。这是一个“提交”动作。
GET 是“读取”的,参数是查询字符串或嵌入在请求标头中。
回复:在“GET”HTTP 请求中使用 JSON布莱恩布恩,
谢谢你的快速反应。 根据编写的开发人员的说法
REST API JSON 是必需的。 这是 Python 中的工作版本
状态信息=得到(
'http://fc8tdbitmapconvs07:11111/daas/status/',
json={'_id': '5cc311a97925b1000ce4fd54', 'include_complete':
真的}
).json()
>> 红色的长数字是工作编号,当然会有所不同。 这
bit 在 python notebook 中运行或在 JMP 中运行时运行良好
以下JSL。 但是,如何让它与 HTTP 请求协议一起工作?
谢谢!
---------------------------------------------- ---------------------------------------------- --------------------------
Python初始化();
Python 执行(
{X},
{status_info},
“
进口通行证
从 io 导入 BytesIO
从时间导入睡眠
将熊猫导入为 pd
从请求导入获取,发布
状态信息=得到(
'http://fc8tdbitmapconvs07:11111/daas/status/',
json={'_id': '5cc311a97925b1000ce4fd54', 'include_complete':
真的}
).json()
“
);
Python 术语 ();
回复:在“GET”HTTP 请求中使用 JSON“得到”
和“发布”
是两种不同的 HTTP 请求方法( https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods )
“GET”通常从服务器读取数据,而
“发布”通常将数据提交到服务器。
这些是在 JMP/JSL 之外定义的 Web 服务器/Web 服务
在您的第一个示例中,您将数据“发布”(也称为提交)到“http://fc8tdbitmapconvs07:11111/daas/”并告诉服务CTFN是要使用的 JSON 内容。
在尝试#1 中,目标是“获取”- 获取正在运行的作业的状态。 我不确定服务是什么,但如果端点是“http://fc8tdbitmapconvs07:11111/daas/status/”,那么你会想要这样的东西:
request2 = New HTTP Request(
url( "http://fc8tdbitmapconvs07:11111/daas/status/" ),
Method( "GET" )
);
data2 = request2 << Send;
因为您不会在 GET 中向服务器提交任何内容。
此外,“Content-Type:application/json”用于描述您发送的内容(在 GET 中不太合适,因为您正在接收数据并且可能被 Web 服务器忽略)
内容类型:标头是您发送的内容(这些由 HTTP 请求自动设置)
接受:标头是您告诉 Web 服务器您想要的内容。
request << Get MIME Type
会告诉你网络服务器发送了什么。 (大多数网络服务器设置此项,但它可以为空)
请记住,在任何之后
request << Send
你可以做
request << Get Status; //this is the http status code
request << Get Status Message; //this is the message from the server
调查 Web 服务发出的任何错误消息。
HTH