|
|
导航: |
论坛 -> Web应用开发
斑竹:bodies |
|
作者: |
|
2023/4/4 16:18:09 |
标题: |
|
加入我的收藏 |
楼主: |
根据系统平台给的文档测试 IdHttp的Post,结果一直报错: HTTP / 1.1 404, 不知道是不是我提交的参数有问题,平台端给的IP加端口我测了可以连接上。
平台给的定义:
此帖子包含附件:
 大小:133.2K |
----------------------------------------------
- |
作者: |
|
2023/4/4 16:22:29 |
1楼: |
我的代码如下(里面的IP、端口、id、密钥我都换成实际的):
此帖子包含附件:
 大小:50.0K |
----------------------------------------------
-
|
作者: |
|
2023/4/4 17:25:25 |
2楼: |
json数据需要“=”吗? client_id= client_secret=
----------------------------------------------
-
|
作者: |
vkow (vkow) |
★☆☆☆☆ |
-
|
普通会员 |
|
2023/4/4 17:30:12 |
2楼: |
404,就一个原因。就是地址错误。Page Not Found
不用检查代码,仔细核对你的URL。每个字符每个大小写每个斜杆的检查。
别人帮不了你。
----------------------------------------------
-
|
作者: |
|
2023/4/4 17:30:48 |
2楼: |
你这代码,POST提交的是Json数据{"client_id=":"test","client_secret=":"1234"},与平台要求不一致
----------------------------------------------
业余编程爱好者
|
作者: |
twg1 (siao siao) |
★☆☆☆☆ |
-
|
普通会员 |
|
2023/4/4 22:49:11 |
3楼: |
var xRequestBody: TStringStream; {create idHttp} try with idHTTP.Request do begin Clear; ContentType := 'application/x-www-form-urlencoded'; end;
xRequestBody := TStringStream.Create('client_id=' + TIdURI.ParamsEncode('test') + '&' + 'client_secret=' + TIdURI.ParamsEncode('1234'), TEncoding.UTF8); try try xRequestBody.Position := 0;
idHTTP.Post(TokenURL, xRequestBody, responseData); {...} except on E: Exception do ShowMessage('Error on request: ' + #13#10 + e.Message); end; finally xRequestBody.Free; end; finally {free idHttp} end;
// ref: https://stackoverflow.com/questions/59266117/idhttp-how-to-send-x-www-form-urlencoded-body
----------------------------------------------
-
|
作者: |
|
2023/4/4 23:06:27 |
4楼: |
确实楼上两位说得都对。
1. 404,你访问的页面不存在。也就是 URL 这个地址指向的那个页面不存在; 2. 看楼主贴的【平台给的定义】,Client_Id 等参数是直接在 URL 里面的。而不是另外放在一个 JSON 数据里上传。
看起来楼主对 HTTP 的 URL 没有理解。但为啥楼主会把那个 URL 的参数说明,理解成搞一个 Json 数据呢?很是奇怪。
----------------------------------------------
-
|
作者: |
|
2023/4/6 13:51:06 |
5楼: |
谢谢楼上的朋友!
公司这边接口之类的本来是另外一个同事的任务,他没时间做,就落我头上了,推不掉。我第一次做这类的程序,很多不懂,基本就是自己网上找资料边学边做。
----------------------------------------------
-
|
作者: |
|
2023/4/6 14:05:36 |
6楼: |
to pcplayer:
我本来是把id和密钥放在url里的,但是这样一来idHttp.post的第二个参数不知道放什么了,网上我也没找到post函数说明的文档,所以....。
----------------------------------------------
-
|
作者: |
|
2023/4/6 15:09:34 |
7楼: |
你不知道放什么也不能乱放啊。
别人的服务器端,你去访问,必须按照别人的要求来。既然人家要求在 URL 里面写参数了,你就照要求做。
另外,为啥一定是 POST 而不是 GET?服务器端有什么文档要求?
至于 HTTP,其实就是用 TCP 连上去,然后发送一些文本。只不过这些文本符合 HTTP 的标准。
----------------------------------------------
-
|
作者: |
|
2023/4/7 8:42:01 |
8楼: |
to pcplayer:
用Post是平台方给的文档上要求的。
此帖子包含附件:
 大小:68.9K |
----------------------------------------------
-
|
作者: |
|
2023/4/10 14:54:16 |
9楼: |
就是tokenURL再加上token 与clieng_id和client_secret 直接组成到URL里,URL里是可以带参数的
----------------------------------------------
-
|
作者: |
szlbz (秋风) |
★☆☆☆☆ |
-
|
盒子活跃会员 |
|
2023/4/14 22:59:20 |
10楼: |
今天post遇到505的错误,后来检查发现是post的参数不小心多了个空格
----------------------------------------------
-
|
作者: |
hectic (村雨Hectic) |
▲▲▲▲▲ |
-
|
普通会员 |
|
2023/5/17 1:58:02 |
11楼: |
404不用找其他原因,就是url有问题,访问不存在的文件或者对象。如果是500系列的错误你再找post提交参数的问题。
----------------------------------------------
-
|
|