DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: delphi2024
今日帖子: 60
在线用户: 22
导航: 论坛 -> Web应用开发 斑竹:bodies  
作者:
男 ds3000 (ds3000) ▲▲▲▲△ -
普通会员
2023/4/4 16:18:09
标题:
关于IdHTTP的Post异常 浏览:1044
加入我的收藏
楼主: 根据系统平台给的文档测试 IdHttp的Post,结果一直报错: HTTP / 1.1 404, 不知道是不是我提交的参数有问题,平台端给的IP加端口我测了可以连接上。

平台给的定义:
此帖子包含附件:
PNG 图像
大小:133.2K
----------------------------------------------
-
作者:
男 ds3000 (ds3000) ▲▲▲▲△ -
普通会员
2023/4/4 16:22:29
1楼: 我的代码如下(里面的IP、端口、id、密钥我都换成实际的):
此帖子包含附件:
PNG 图像
大小:50.0K
----------------------------------------------
-
作者:
男 z_y_b_delphi (z_y_b_delphi) ★☆☆☆☆ -
普通会员
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。每个字符每个大小写每个斜杆的检查。

别人帮不了你。
----------------------------------------------
-
作者:
男 comeheres (tomorrow) ▲▲▲▲▲ -
普通会员
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
----------------------------------------------
-
作者:
男 pcplayer (pcplayer) ★☆☆☆☆ -
普通会员
2023/4/4 23:06:27
4楼: 确实楼上两位说得都对。

1. 404,你访问的页面不存在。也就是 URL 这个地址指向的那个页面不存在;
2. 看楼主贴的【平台给的定义】,Client_Id 等参数是直接在 URL 里面的。而不是另外放在一个 JSON 数据里上传。

看起来楼主对 HTTP 的 URL 没有理解。但为啥楼主会把那个 URL 的参数说明,理解成搞一个 Json 数据呢?很是奇怪。
----------------------------------------------
-
作者:
男 ds3000 (ds3000) ▲▲▲▲△ -
普通会员
2023/4/6 13:51:06
5楼: 谢谢楼上的朋友!

公司这边接口之类的本来是另外一个同事的任务,他没时间做,就落我头上了,推不掉。我第一次做这类的程序,很多不懂,基本就是自己网上找资料边学边做。
----------------------------------------------
-
作者:
男 ds3000 (ds3000) ▲▲▲▲△ -
普通会员
2023/4/6 14:05:36
6楼: to pcplayer:

我本来是把id和密钥放在url里的,但是这样一来idHttp.post的第二个参数不知道放什么了,网上我也没找到post函数说明的文档,所以....。
----------------------------------------------
-
作者:
男 pcplayer (pcplayer) ★☆☆☆☆ -
普通会员
2023/4/6 15:09:34
7楼: 你不知道放什么也不能乱放啊。

别人的服务器端,你去访问,必须按照别人的要求来。既然人家要求在 URL 里面写参数了,你就照要求做。

另外,为啥一定是 POST 而不是 GET?服务器端有什么文档要求?

至于 HTTP,其实就是用 TCP 连上去,然后发送一些文本。只不过这些文本符合 HTTP 的标准。
----------------------------------------------
-
作者:
男 ds3000 (ds3000) ▲▲▲▲△ -
普通会员
2023/4/7 8:42:01
8楼: to pcplayer:

用Post是平台方给的文档上要求的。
此帖子包含附件:
PNG 图像
大小:68.9K
----------------------------------------------
-
作者:
男 glings (glings) ★☆☆☆☆ -
普通会员
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提交参数的问题。
----------------------------------------------
-
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行70.3125毫秒 RSS