php 发送post、get请求的三种方式

// 发送post请求

// @param string $url 请求地址

// @param array $post_data post键值对数据

// @return string

function sendPost($url, $post_data){

// http_build_query()

// 生成URL-encode之后的请求字符串

//

// 备注:

// php5.3的分隔符用的是&,如果目标服务器也是php5.3,那么就不会出错。

// 但是如果目标服务器是java的tomcat或者别的,那么&可能就会处理错误。

// 以下的形式能够避免错误

// http_build_query($post_data, ‘‘, ‘&‘);

// stream_context_create()

// 创建并返回一个流的资源

$username=‘username‘;

$password=‘password‘;

$postData = http_build_query($post_data, ‘‘, ‘&‘);

$options = array(

‘http‘ =>array(

‘method‘=>"POST",

‘header‘=>"Accept-language: en\r\n".

"Cookie: foo=bar\r\n".

"Content-type: application/x-www-form-urlencoded\r\n".

"Authorization: Basic " . base64_encode("$username:$password").‘\r\n‘,

‘content‘ => $postData,

‘timeout‘ => 15 * 60,//超时时间(单位:s)

)

);

//创建并返回一个流的资源

$context = stream_context_create($options);

$result = file_get_contents($url, false, $context);

return $result;

}

备注:如果目标地址需要登录验证,就需要红色字部分的代码,如果不需要登录验证,红色字部分代码不用写

  1. <?php
  2. /**
  3. * Socket版本
  4. * 使用方法:
  5. * $post_string = "app=socket&version=beta";
  6. * request_by_socket(‘chajia8.com‘, ‘/restServer.php‘, $post_string);
  7. */
  8. function request_by_socket($remote_server,$remote_path,$post_string,$port = 80,$timeout = 30) {
  9. $socket = fsockopen($remote_server, $port, $errno, $errstr, $timeout);
  10. if (!$socket) die("$errstr($errno)");
  11. fwrite($socket, "POST $remote_path HTTP/1.0");
  12. fwrite($socket, "User-Agent: Socket Example");
  13. fwrite($socket, "HOST: $remote_server");
  14. fwrite($socket, "Content-type: application/x-www-form-urlencoded");
  15. fwrite($socket, "Content-length: " . (strlen($post_string) + 8) . "");
  16. fwrite($socket, "Accept:*/*");
  17. fwrite($socket, "");
  18. fwrite($socket, "mypost=$post_string");
  19. fwrite($socket, "");
  20. $header = "";
  21. while ($str = trim(fgets($socket, 4096))) {
  22. $header .= $str;
  23. }
  24. $data = "";
  25. while (!feof($socket)) {
  26. $data .= fgets($socket, 4096);
  27. }
  28. return $data;
  29. }
  30. ?>
  31. <?php
  32. /**
  33. * Curl版本
  34. * 使用方法:
  35. * $post_string = "app=request&version=beta";
  36. * request_by_curl(‘http://www.qianyunlai.com/restServer.php‘, $post_string);
  37. */
  38. function request_by_curl($remote_server, $post_string) {
  39. $ch = curl_init();
  40. curl_setopt($ch, CURLOPT_URL, $remote_server);
  41. curl_setopt($ch, CURLOPT_POSTFIELDS, ‘mypost=‘ . $post_string);
  42. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  43. curl_setopt($ch, CURLOPT_USERAGENT, "qianyunlai.com‘s CURL Example beta");
  44. $data = curl_exec($ch);
  45. curl_close($ch);
  46. return $data;
  47. }
  48. ?>
时间: 2024-08-26 14:42:08

php 发送post、get请求的三种方式的相关文章

java实现HTTP请求的三种方式

目前JAVA实现HTTP请求的方法用的最多的有两种:一种是通过HTTPClient这种第三方的开源框架去实现.HTTPClient对HTTP的封装性比较不错,通过它基本上能够满足我们大部分的需求,HttpClient3.1 是 org.apache.commons.httpclient下操作远程 url的工具包,虽然已不再更新,但实现工作中使用httpClient3.1的代码还是很多,HttpClient4.5是org.apache.http.client下操作远程 url的工具包,最新的:另一

android 向服务器Get和Post请求的两种方式,android向服务器发送文件,自己组装协议和借助第三方开源

/** * @author [email protected] * @time 20140606 */ package com.intbird.utils; import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream

C#中Post请求的两种方式发送参数链和Body的

POST请求 有两种方式 一种是组装key=value这种参数对的方式 一种是直接把一个字符串发送过去 作为body的方式 我们在postman中可以看到 sfdsafd sdfsdfds public class KeyWordController : BaseController { private string listClassUrl = "http://192.168.1.171:8789/keywords/list_class"; public ActionResult L

(六)、获取Keystone token的三种方式

让我们粗略看一下,三种从Keystone获得token的方式.在尝试这三种方式之前,你得确保已经装好Keystone终端.如果还没有装好,可以看grizzly安装版本的Keystone 安装部分. Note:这些呼叫都将请求的是Keystone v2版本. 假定你已经安装好,并且Keystone已经跑起来了:).然后接下来我们首先要做的便是,发一个简单的cURL发送请求: $ curl -d '{"auth": {"tenantName": "demo&q

android客户端与服务端交互的三种方式

android客户端向服务器通信一般有以下选择: 1.传统的java.net.HttpURLConnection类 2.apache的httpClient框架(已纳入android.jar中,可直接使用) 3.github上的开源框架async-http(基于httpClient) ---------------------------------------------------------------------------------- 下面分别记录这三种方式的使用, 传统方式: /**

使用Net.Mail、CDO组件、JMail组件三种方式发送邮件

原文:使用Net.Mail.CDO组件.JMail组件三种方式发送邮件 一.使用Net.Mail 需要服务器认证,大部分服务器端口为25. 1 /// <summary> 2 /// 用MailMessage通过需要认证的SMTP服务器发送邮件,可以发送附件 3 /// </summary> 4 /// <param name="frmAddress">发件箱地址,例:[email protected]</param> 5 /// <

文件上传的三种方式-Java

前言:因自己负责的项目(jetty内嵌启动的SpringMvc)中需要实现文件上传,而自己对java文件上传这一块未接触过,且对 Http 协议较模糊,故这次采用渐进的方式来学习文件上传的原理与实践.该博客重在实践. 一.Http协议原理简介 HTTP是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展.目前在WWW中使用的是HTTP/1.0的第六版,HTTP/1.1的规范化工作正在进行之中,而且HT

apache两种方案三种方式实现反向代理tomcat

目录 1.概述 2.方案一:以proxy_module方式反向代理 3.方案二:以mod_jk方式反向代理 4.总结 1.概述 在前一博客(http://zhaochj.blog.51cto.com/368705/1639740)中实现了tomcat的在standalone模式下的部署,这样tomcat就身兼职两职,一方向要对http的请求作出响应,又要处理JSP程序,而处理http请求不是tomcat的强项,所以这样的请求就交给httpd.nginx这样的的专业处理http请求的套件来处理,而

宿主机为linux、windows分别实现VMware三种方式上网(转)

一.VMware三种方式工作原理1 Host-only连接方式  让虚机具有与宿主机不同的各自独立IP地址,但与宿主机位于不同网段,同时为宿主主机新增一个IP地址,且保证该IP地址与各虚机IP地址位于同一网段.最终结果是新建了一个由所有虚机与宿主主机所构成的局域网,但该局域网与宿主主机本身所处的现有局域网是相互独立的,如果不做额外路由设置,这两个局域网之间不会连通,因此新建的局域网可以认为是一个单独从属于当前宿主主机的私有网络,其成员为当前宿主主机和相关的所有虚机,这也是Host-only命名的