首页/易语言源码/ 易语言POST返回空 php模拟POST返回正常 处理方法相关事宜

以前就遇到过易语言POST返回空 但是用php模拟POST返回正常。

一直调用网页的话肯定不方便 所以一直在找解决方法。

php模拟post代码

function http_request($url, $data = null)
{
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
    if (!empty($data)){
        curl_setopt($curl, CURLOPT_POST, 1);
        curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
    }
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
    $output = curl_exec($curl);
    curl_close($curl);
    return $output;
}

WINHTTP_OPTION_SECURE_PROTOCOLS
        Sets an unsigned long integer value that specifies which secure protocols are acceptable. By default only SSL3 and TLS1 are enabled in Windows 7 and Windows 8. By default only SSL3, TLS1.0, TLS1.1, and TLS1.2 are enabled in Windows 8.1 and Windows 10. The value can be a combination of one or more of the following values.

所以对于 Winhttp 来说,官方给的解释是, TLS1.2 只有在 Win8.1 和 Win 10 上才默认支持

下面贴代码:

WinHttpSetOption (hSession, #WINHTTP_OPTION_SECURE_PROTOCOLS, 位或 (#WINHTTP_FLAG_SECURE_PROTOCOL_TLS1_2, #WINHTTP_FLAG_SECURE_PROTOCOL_TLS1_1, #WINHTTP_FLAG_SECURE_PROTOCOL_SSL2, #WINHTTP_FLAG_SECURE_PROTOCOL_SSL3, #WINHTTP_FLAG_SECURE_PROTOCOL_TLS1), 4)

以问答区给的苹果官网注册的页面为例,win10 测试成功, win7 下 send 就不能成功。

win 10 其实默认就支持,并不需要执行上面的代码,上面的代码有什么用呢?答曰没多大用,只是说明原理。

那么 win7 用户应该怎么办?下面看这里:
https://support.microsoft.com/en-us/help/3140245/update-to-enable-tls-1-1-and-tls-1-2-as-a-default-secure-protocols-in

意思就是说如果你非要支持,就需要安装这个更新

更新下载:http://www.catalog.update.microsoft.com/search.aspx?q=kb3140245
下载自己的版本对应的,安装之后重启,然后要设置注册表,以 win7x64 为例:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp]
"DefaultSecureProtocols"=dword:00000a00

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp]
"DefaultSecureProtocols"=dword:00000a00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings]
"SecureProtocols"=dword:00000a80

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings]
"SecureProtocols"=dword:00000a80
如果自己添加不来,微软也提供了工具:

此处内容已隐藏,立即登录

运行完成后重启即可。
此时在 win7x64 测试,发现刚才 send 失败的苹果页面已经可以访问成功。

易语言POST返回空 php模拟POST返回正常 处理方法相关事宜


另一个解决方法 就是使用hp_socket 

提取密码

此处内容已隐藏,立即登录

 

下载地址 
蓝奏网盘 
温馨提示如有转载或引用以上内容之必要,敬请将本文链接作为出处标注,谢谢合作!

评论:

发表评论:

code