php、asp 发起post请求
2015-11-02 19:46
465 查看
asp
使用MSXML2.XMLHTTP发出post请求参考
现在不再流行,可今天需要写一个支持post的asp程序,好不容易找了个能用的。asp函数返回值就是赋值给一个和函数名相同的变量。
解决乱码问题,
'UTF-8: <%@Language="vbscript" Codepage="65001"%> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" > </head> `gb2312: <%@Language="vbscript" Codepage="936"%> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" > </head>
<% On error resume next '容错处理 Function GetBody(ips) '获取远程IP地址POST信息 Set https = Server.CreateObject("MSXML2.XMLHTTP") With https .Open "Post", "http://www.ip138.com/ips8.asp", False .setRequestHeader "Content-Type","application/x-www-form-urlencoded" .Send "ip="&ips&"&action=2" GetBody = .ResponseBody End With GetBody = BytesToBstr(GetBody,"GB2312") Set https = Nothing End Function Function BytesToBstr(body,Cset) '转换GB2312/utf-8 dim objstream set objstream = Server.CreateObject("adodb.stream") objstream.Type = 1 objstream.Mode =3 objstream.Open objstream.Write body objstream.Position = 0 objstream.Type = 2 objstream.Charset = Cset BytesToBstr = objstream.ReadText objstream.Close set objstream = nothing End Function Response.Write GetBody("61.186.177.105") %>
php
curl 方式,这个直接使用库,但是有问题.multipart form-data boundary 是被curl改为上传文件的形式。其中的bounty是分割开不同的上传项,随机产生
使用数组提供 post 数据时,CURL 组件大概是为了兼容 @filename 这种上传文件的写法,默认把 content_type 设为了 multipart/form-data。虽然对于大多数服务器并没有影响,但是还是有少部分服务器不兼容。
PHP中CURL的CURLOPT_POSTFIELDS参数使用细节
multipart form-data boundary 说明
POST multipart/form-data与application/x-www-form-urlencode的区别
/article/7696495.html
<?php header("Content-Type:text/html;charset=utf-8"); $ch = curl_init(); /* 设置验证方式 */ curl_setopt($ch, CURLOPT_HTTPHEADER, array('Accept:text/plain;charset=utf-8', 'Content-Type:application/x-www-form-urlencoded','charset=utf-8')); /* 设置返回结果为流 */ curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); /* 设置超时时间*/ curl_setopt($ch, CURLOPT_TIMEOUT, 10); /* 设置通信方式 */ curl_setopt($ch, CURLOPT_POST, 1); curl_setopt ($ch, CURLOPT_URL, 'http://baidu.com/add.json'); curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query(array('apikey' => '24d20axxxxxxxxxxxxxxxxx', 'content' => ('您关注的#commodity_name#现在活动半价啦,赶快来看看吧!')))); $file_contents = curl_exec($ch); curl_close($ch); print_r($file_contents);?>
发起socket请求
function sock_post($url,$query){ $data = ""; $info=parse_url($url); $fp=fsockopen($info["host"],80,$errno,$errstr,30); if(!$fp){ return $data; } $head="POST ".$info['path']." HTTP/1.0\r\n"; $head.="Host: ".$info['host']."\r\n"; $head.="Referer: http://".$info['host'].$info['path']."\r\n"; $head.="Content-type: application/x-www-form-urlencoded\r\n"; $head.="Content-Length: ".strlen(trim($query))."\r\n"; $head.="\r\n"; $head.=trim($query); $write=fputs($fp,$head); $header = ""; while ($str = trim(fgets($fp,4096))) { $header.=$str; } while (!feof($fp)) { $data .= fgets($fp,4096); } return $data; }
相关文章推荐
- ASP.NET : 如何将服务端的多个文件打包下载
- ASP.NET : 如何将服务端的多个文件打包下载
- 【Asp.Net MVC】日常---路由
- asp.net 微信支付源码demo 官方坑爹
- .NET中First,FirstOrDefault,Single,SingleOrDefault的区别是什么
- ASP.NET MVC API 路由生成规则
- Asp.net实现直接在浏览器预览Word、Excel、PDF、Txt文件(附源码)
- ASP.NET如何使用web服务的会话状态
- asp.net中“从客户端中检测到有潜在危险的Request.Form值”错误的解决办法
- ASP.NET Identity Authentication
- AspectJ AOP切面编程(XML配置)
- vs2013下, asp.net mvc5 使用和发布rdlc报表的步骤 ,使用ef来获取数据
- Asp.net中的页面跳转及post数据
- CS1061: “ASP.send_aspx”不包含“sender_TextChanged”的定义,并且找不到可接受类型为“ASP.send_aspx”的第一个参数的扩展方法“sender_Text
- 玩转树莓派--树莓派准备工作
- asp.net报错“尝试读取或写入受保护的内存。这通常指示其他内存已损坏”的解决办法
- asp.net报错“尝试读取或写入受保护的内存。这通常指示其他内存已损坏”的解决办法
- asp.net中“从客户端中检测到有潜在危险的Request.Form值”错误的解决办法
- ASP.NET如何使用web服务的会话状态
- asp.net 错误提示:Could not load type 'SendEmail.WebPage'