用delphi的idhttp Get一个url如下:
  http://117.135.237.4:9090/agent/api/treatmentModeUpdate?userName=VDAwMIMQ==&userPwd=VDAjIxMQ==&centerNo=NTIyMj2&hospCode=Nz3MA==&Year=MjAxOA==

用浏览器打开这个地址,服务器会返回以下json字样:

  {"Message":"ob7FqbrPvdO/2szhyr6hvzrK/b7dv+LE2rK/yv2+3dPQs+XNu6Osx+vBqs+1vqfG5srbuvPIy9Sx"}

这个地址外网也可以打开,但是用delphi自带的Idhttp.get永远都会提示403,不管是D7,XE2,D10都试过了,都是403。

  用IE打开此URL也照样会提示403,这样,我就放心了,毕竟不是我自己的问题,连微软也是一样,http也是用的微软的IE内核,这我也改不了的(可能有大神可以改,我能力还不够)      对接方只说了句:不兼容IE,用360浏览器(此时我内伤多少个CNM崩腾而过。。。。。连IE都不支持,什么LJ软件)

那也没啥办法,毕竟是跟人家对接,人家说了算,毕竟其他开发工具可以获取到错误信息,后来各种改HTTP的IdHTTP1.Request.UserAgent 属性,改源码,还是不行,用webbrowser1也不行,毕竟也是用的IE内核。

然后安装了dcef3控件(具体下载地址搜索dcef3下载就有,这里推荐个地址:https://blog.csdn.net/risesoft2012/article/details/53333583安装方法,使用方法说的很详细了),用了Chrome浏览器控件,发现是可以返回错误信息的,那么至少还是有点希望了

直接贴代码,控件自带的demo都很全,先放个Chromium1控件,然后两个按钮,一个是加载网址,一个是获取返回数据,我的目的也只是获取到返回的那个信息而已,够用。。。

//回调函数,获取chrome加载地址的返回值
procedure CallbackGetText(const txt: ustring);
var
source: ustring;
ss: TStrings;
begin
source := txt;
source := StringReplace(source, '<', '&lt;', [rfReplaceAll]);
source := StringReplace(source, '>', '&gt;', [rfReplaceAll]);
Form3.Memo1.Text := source;
ss := TStringList.Create;
ss.Text := source;
ss.SaveToFile('source.txt');
// source := '<html><body>Text:<pre>' + source + '</pre></body></html>';
// Form3.Chromium1.Browser.MainFrame.LoadString(source, 'source://text');
end; //加载URL
procedure TForm3.Button1Click(Sender: TObject);
begin
Chromium1.Browser.MainFrame.LoadUrl('about:blank'); //第一次必须先加载空白页,才能浏览其他网页
Chromium1.Browser.MainFrame.LoadUrl(Edit1.Text );
Chromium1.Browser.MainFrame.GetTextProc(CallbackGetText);
end; //调用回调,获取返回信息
procedure TForm3.Button2Click(Sender: TObject);
begin
Chromium1.Browser.MainFrame.GetTextProc(CallbackGetText);
end;

正常的地址用idhttp.get()是完全可以实现的,没必要这么折腾,这是没办法了,我想应该还有其他的办法,或按照其他http控件,只要不是IE内核的控件都行,希望有大神知道其他方法的也可以留个言。

delphi http 403 获取不到服务器返回的错误消息 用浏览器打开url可以返回的更多相关文章

  1. 浏览器输入URL到返回页面的全过程

    [问题描述] 在浏览器输入www.baidu.com,然后,浏览器显示相应的百度页面,这个过程究竟发生了什么呢? [第一步,解析域名,找到主机] 正常情况下,浏览器会缓存DNS一段时间,一般2分钟到3 ...

  2. HTTP工作过程(浏览器输入URL到返回HTML页面都经历了什么)

    超文本传送协议(HyperText Transport Protocol,HTTP)是互联网上应用最为广泛的一种网络协议,它工作在应用层,使用TCP的80号端口提供服务.并且HTTP是工作在客户/服务 ...

  3. HTTP请求中带有特殊字符"|",返回400错误

    Java平台,服务器是Tomcat8,前端ajax访问服务器时,F12返回400错误,经分析,URL地址中get传参值里面含有“|“, Invalid character found and RFC ...

  4. 获取小众ftp服务器指定目录内容列表

    今天获取小众ftp服务器指定目录内容列表时费劲急了. ///parama url="ftp://x.x.x.x/dir_name" public string GetFTPDir( ...

  5. 正向代理 forward proxy、反向代理 reverse proxy、透明代理 transparent proxy nginx反向代理原理和配置讲解 防止外部客户机获取内部内容服务器的重定向 URL 缓存命中

    [大型网站技术实践]初级篇:借助Nginx搭建反向代理服务器 - Edison Chou - 博客园http://www.cnblogs.com/edisonchou/p/4126742.html 图 ...

  6. 微信小程序授权 获取用户的openid和session_key【后端使用java语言编写】,我写的是get方式,目的是测试能否获取到微信服务器中的数据,后期我会写上post请求方式。

    在这里给大家分享下我的心得,1.写代码前一定要对整个流程有个了解.我就是因为在先不了解整个过程中去ctrl+c+v他人的博客代码,花费很多无用的时间去处理还不知道能不能跑的起来的代码. 2.本人比较喜 ...

  7. Delphi 版本信息获取函数 GetFileVersionInfo、GetFileVersionInfoSize、VerFindFile、VerInstallFile和VerQueryValue

    一.版本信息获取函数简介和作用 获取文件版本信息的作用: 1. 避免在新版本的组件上安装旧版本的相同组件: 2. 在多语言系统环境中,操作系统根据文件版本信息里提供的语言信息在启动程序时决定使用的正确 ...

  8. Java Web项目获取客户端和服务器的IP地址

    在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的.但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实I ...

  9. vs2015启动网站调试提示 HTTP 错误 403.14 - Forbidden Web 服务器被配置为不列出此目录的内容。 解决方法

    今天安装了vs2015 下载一个项目进行试用,启动调试的时候提示 HTTP 错误 403.14 - Forbidden Web 服务器被配置为不列出此目录的内容. 最可能的原因: 没有为请求的 URL ...

随机推荐

  1. Data_Structure04-树

    一.学习总结 1.树结构思维导图 2.树结构学习体会 树结构,从字面上的意思来看,可以简单的理解为数据像一棵树一样展开存储.在学习本章的内容中,一开始只是理解了概念,在真正做题中,一点思路都没有,不知 ...

  2. Ubantu 网卡绑定固定IP

    # The primary network interface auto eth0 #iface eth0 inet dhcp iface eth0 inet static address 192.1 ...

  3. 二货Mysql中设置字段的默认值问题

    Mysql设置字段的默认值的确很落伍 1.不支持函数 2.只支持固定常量. 经常用到的日期类型,因为不支持getdate或者now函数,所以只能设置timestamp类型 而且还必须在默认值那个地方写 ...

  4. Django学习---组合搜索组件

    组合搜索组件 我们都会写博客,写文章之后我们要给文章设置目录,设置类型.之后我们在浏览文章的时候就能够按类别进行精确定位到文章,那这个组合搜索我们应该怎么做呢? 首先我们先创建3张表,分别存放文章,文 ...

  5. Django框架之模板语法【转载】

    Django框架之模板语法 一.什么是模板? 只要是在html里面有模板语法就不是html文件了,这样的文件就叫做模板. 二.模板语法分类 一.模板语法之变量:语法为 {{ }}: 在 Django ...

  6. 用jquery操作字体颜色覆盖当前页面的css设置

    直接使用css操作color的时候,!important一直不生效,记录下,使用下面的可以起作用 用jquery操作字体颜色覆盖当前页面的css设置 $('a[href="?p=home&a ...

  7. 关于C语言中%p和%X的思考

    说白了,(%A)仅仅代表以何种格式显示所要显示的数据,具体何种格式如下: %d 有符号10进制整数 %i 有符号10进制整数 %o 无符号8进制整数 %u 无符号10进制整数 %x 无符号的16进制数 ...

  8. MyEclipse 配置Android环境

    eclipse https://www.eclipse.org/downloads/download.php?file=/oomph/epp/mars/R2/eclipse-inst-win64.ex ...

  9. 光圈、曝光、ISO

    光圈大小对景深的影响: 光圈大小示意图(值越小光圈越大) 光圈.曝光.ISO对图像效果影响

  10. 如何用MaskBlt实现两个位图的合并,从而实现背景透明

    我有两个位图,一个前景图,一个背景图(mask用途).请问如何用MaskBlt实现两个位图的合并,从而实现背景透明! 核心代码:dcImage.SetBkColor(crColour);dcMask. ...