用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. 慕课网 -- 性能优化之PHP优化总结笔记

    视频链接,感兴趣的可以去看看,对我来说耳目一新. http://www.imooc.com/learn/205 什么情况下遇到PHP性能问题 1 :PHP语法使用不恰当 2 :使用了PHP语言他不擅长 ...

  2. 学习笔记之SQL 教程

    SQL 教程 | 菜鸟教程 http://www.runoob.com/sql/sql-tutorial.html SQL,指结构化查询语言,全称是 Structured Query Language ...

  3. C++和C# WebService相互调用

    C#调用C++ gSOAP: 调用http://blog.csdn.net/ggz631047367/article/details/44567411的服务http://127.0.0.1:8089/ ...

  4. SmallLocks

    folly/SmallLocks.h This module is currently x64 only. This header defines two very small mutex types ...

  5. 如何在Solr中实现多core查询

    基于solr或者elasticsearch提供的多核,多索引,多shard等查询能力,一般都是由lucene提供的多索引查询的功能演化而来的,这个功能在单机版的lucene里面确实没有发挥多大的威力, ...

  6. 基于git的管理应用程序基线包和版本

    由于工作的需要,身为git的小白的我开始研究git相关的命令和操作.结合网上收集和廖雪峰的git教程,记录所学知识点. 相关的效果就不再这里显示了. 首先我们看一下git的常用命令: 常用命令 git ...

  7. pandas的数据结构

    要使用pandas,需要熟悉它的两个主要的数据结构,Series和DataFrame. Series series是一种类似于以为数组的对象,它由一组数据(各种numpy的数据类型)以及一组与之相关的 ...

  8. 7 MySQL--记录的增删改查

    MySQL数据操作: DML ======================================================== 在MySQL管理软件中,可以通过SQL语句中的DML语言 ...

  9. 最值得学习阅读的10个C语言开源项目代码

    阅读优秀代码是提高开发人员修为的一种捷径-- 1. Webbench Webbench是一个在linux下使用的非常简单的网站压测工具.它使用fork()模拟多个客户端同时访问我们设定的URL,测试网 ...

  10. 解决no-session延迟加载问题

    解决no-session延迟加载问题 说明:dao层使用Hibernate从数据库查询数据信息返回给web层,在web层打印信息报no-Session错误, 产生原因 关联对象默认都是采用延迟加载 事 ...