delphi http 403 获取不到服务器返回的错误消息 用浏览器打开url可以返回
用delphi的idhttp Get一个url如下:
http://117.135.237.4:9090/agent/api/treatmentModeUpdate?userName=VDAwMIMQ==&userPwd=VDAjIxMQ==¢erNo=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, '<', '<', [rfReplaceAll]);
source := StringReplace(source, '>', '>', [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可以返回的更多相关文章
- 浏览器输入URL到返回页面的全过程
[问题描述] 在浏览器输入www.baidu.com,然后,浏览器显示相应的百度页面,这个过程究竟发生了什么呢? [第一步,解析域名,找到主机] 正常情况下,浏览器会缓存DNS一段时间,一般2分钟到3 ...
- HTTP工作过程(浏览器输入URL到返回HTML页面都经历了什么)
超文本传送协议(HyperText Transport Protocol,HTTP)是互联网上应用最为广泛的一种网络协议,它工作在应用层,使用TCP的80号端口提供服务.并且HTTP是工作在客户/服务 ...
- HTTP请求中带有特殊字符"|",返回400错误
Java平台,服务器是Tomcat8,前端ajax访问服务器时,F12返回400错误,经分析,URL地址中get传参值里面含有“|“, Invalid character found and RFC ...
- 获取小众ftp服务器指定目录内容列表
今天获取小众ftp服务器指定目录内容列表时费劲急了. ///parama url="ftp://x.x.x.x/dir_name" public string GetFTPDir( ...
- 正向代理 forward proxy、反向代理 reverse proxy、透明代理 transparent proxy nginx反向代理原理和配置讲解 防止外部客户机获取内部内容服务器的重定向 URL 缓存命中
[大型网站技术实践]初级篇:借助Nginx搭建反向代理服务器 - Edison Chou - 博客园http://www.cnblogs.com/edisonchou/p/4126742.html 图 ...
- 微信小程序授权 获取用户的openid和session_key【后端使用java语言编写】,我写的是get方式,目的是测试能否获取到微信服务器中的数据,后期我会写上post请求方式。
在这里给大家分享下我的心得,1.写代码前一定要对整个流程有个了解.我就是因为在先不了解整个过程中去ctrl+c+v他人的博客代码,花费很多无用的时间去处理还不知道能不能跑的起来的代码. 2.本人比较喜 ...
- Delphi 版本信息获取函数 GetFileVersionInfo、GetFileVersionInfoSize、VerFindFile、VerInstallFile和VerQueryValue
一.版本信息获取函数简介和作用 获取文件版本信息的作用: 1. 避免在新版本的组件上安装旧版本的相同组件: 2. 在多语言系统环境中,操作系统根据文件版本信息里提供的语言信息在启动程序时决定使用的正确 ...
- Java Web项目获取客户端和服务器的IP地址
在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的.但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实I ...
- vs2015启动网站调试提示 HTTP 错误 403.14 - Forbidden Web 服务器被配置为不列出此目录的内容。 解决方法
今天安装了vs2015 下载一个项目进行试用,启动调试的时候提示 HTTP 错误 403.14 - Forbidden Web 服务器被配置为不列出此目录的内容. 最可能的原因: 没有为请求的 URL ...
随机推荐
- EqualsBuilder 类的使用
apache的commons-lang包提供了一个EqualsBuilder类,提供了基本属性.数组.对象等比较操作的封装,可以辅助实现对象的equals(Object)方法. 这个类的使用比较简单, ...
- Linux下添加php的zip模块
今天早上开发的人员过来跟我说,测试机上的XX项目报了个错: include(ZipArchive.php): failed to open stream: No such file or direct ...
- ThinkPHP实现事务回滚示例代码
ThinkPHP的事务回滚示例如下: ? 1 2 3 4 5 6 7 8 9 10 $m=D('YourModel');//或者是M(); $m2=D('YouModel2'); $m->sta ...
- Python 中的属性访问与描述符
在Python中,对于一个对象的属性访问,我们一般采用的是点(.)属性运算符进行操作.例如,有一个类实例对象foo,它有一个name属性,那便可以使用foo.name对此属性进行访问.一般而言,点(. ...
- js 取元素相对页面的高度和宽度
function pos(elem) { var x = elem.offsetLeft, y = elem.offsetTop; while (elem = elem.offsetPa ...
- linux中grep工具
正则表达式 以前我们用grep在一个文件中找出包含某些字符串的行,比如在头文件中找出一个宏定义.其实grep还可以找出符合某个模式(Pattern)的一类字符串.例如找出所有符合xxxxx@xxxx. ...
- Installing Eclipse Plug-ins from an Update Site with a self-signed certificate
If you try and connect to a p2 repository on a server with a self-signed cert, you will more than li ...
- Git----时光穿梭机之工作区和暂存区03
Git和其他版本控制系统SVN的一个不同之处就是有暂存区的概念 先来看看名词解释 工作区(Working Directory) 就是你在我电脑里能看到的目录,比如我的learngittest文件夹就是 ...
- 用logger在控制台打印信息
第一步: 导入jar包,maven项目可以直接添加 <dependency> <groupId>log4j</groupId> <artifactId> ...
- 更改FP SYSTEM密码
1 Please create a new account and set a new password 2 backup table ABPPMGR.USER_PROFILE , ABPPMGR . ...