url参数拼接 php,php 对url 操作类:url拼接、get获取页面、post获取页面(带传参)

这是一个关于URL封装类的实现,包含了get_contents、get和post等方法,用于进行HTTP请求。类中提供了URL拼接、GET请求和POST请求的功能,支持文件_get_contents和cURL两种方式获取远程内容。在请求失败时,会通过错误处理类显示错误信息。
摘要由CSDN通过智能技术生成

/** @brief url封装类,将常用的url请求操作封装在一起

**/

classURL{private $error;public function__construct(){$this->error = newErrorCase();

}/**

* combineURL

* 拼接url

* @param string $baseURL 基于的url

* @param array $keysArr 参数列表数组

* @return string 返回拼接的url*/

public function combineURL($baseURL,$keysArr){$combined = $baseURL."?";$valueArr = array();foreach($keysArr as $key => $val){$valueArr[] = "$key=$val";

}$keyStr = implode("&",$valueArr);$combined .= ($keyStr);return $combined;

}/**

* get_contents

* 服务器通过get请求获得内容

* @param string $url 请求的url,拼接后的

* @return string 请求返回的内容*/

public function get_contents($url){if (ini_get("allow_url_fopen") == "1") {$response = file_get_contents($url);

}else{$ch =curl_init();

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);

curl_setopt($ch, CURLOPT_URL, $url);$response = curl_exec($ch);

curl_close($ch);

}//-------请求为空

if(empty($response)){$this->error->showError("50001");

}return $response;

}/**

* get

* get方式请求资源

* @param string $url 基于的baseUrl

* @param array $keysArr 参数列表数组

* @return string 返回的资源内容*/

public function get($url, $keysArr){$combined = $this->combineURL($url, $keysArr);return $this->get_contents($combined);

}/**

* post

* post方式请求资源

* @param string $url 基于的baseUrl

* @param array $keysArr 请求的参数列表

* @param int $flag 标志位

* @return string 返回的资源内容*/

public function post($url, $keysArr, $flag = 0){$ch =curl_init();if(! $flag) curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);

curl_setopt($ch, CURLOPT_POST, TRUE);

curl_setopt($ch, CURLOPT_POSTFIELDS, $keysArr);

curl_setopt($ch, CURLOPT_URL, $url);$ret = curl_exec($ch);

curl_close($ch);return $ret;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 Java 中发送请求时,您可以使用不同的方法来传递参数,而不是将其直接拼接URL 中。以下是两种常见的方法: 1. 使用查询参数(Query Parameters):您可以使用查询参数来传递参数,这些参数将附加到 URL 的末尾。可以使用 Java 中的 `java.net.URL` 来构建有查询参数URL。例如: ```java import java.io.IOException; import java.net.HttpURLConnection; import java.net.URL; import java.util.HashMap; import java.util.Map; public class APIClient { public static void main(String[] args) { try { // 创建 URL 对象 URL url = new URL("https://api.example.com/endpoint"); // 创建查询参数 Map<String, String> queryParams = new HashMap<>(); queryParams.put("param1", "value1"); queryParams.put("param2", "value2"); // 构建有查询参数URL StringBuilder urlBuilder = new StringBuilder(url.toString()); urlBuilder.append('?'); for (Map.Entry<String, String> entry : queryParams.entrySet()) { urlBuilder.append(entry.getKey()); urlBuilder.append('='); urlBuilder.append(entry.getValue()); urlBuilder.append('&'); } urlBuilder.deleteCharAt(urlBuilder.length() - 1); // 删除最后一个多余的'&' // 打开连接 HttpURLConnection connection = (HttpURLConnection) urlBuilder.openConnection(); // 设置请求方法等其他必要设置 // 发送请求 int responseCode = connection.getResponseCode(); // 处理响应等其他操作 // 关闭连接 connection.disconnect(); } catch (IOException e) { e.printStackTrace(); } } } ``` 上述代码中,我们使用 `java.net.URL` 创建了一个 URL 对象,并使用 `Map` 存储要传递的参数。然后,我们将查询参数附加到 URL 的末尾,并使用 `openConnection()` 打开连接。 2. 使用请求体(Request Body):如果参数较多或内容较复杂,您可以将参数作为请求体的一部分发送。这通常用于 POST、PUT 等需要传递大量数据的请求。您可以使用 Java 中的 `java.net.HttpURLConnection` 来设置请求体。例如: ```java import java.io.IOException; import java.io.OutputStream; import java.net.HttpURLConnection; import java.net.URL; import java.nio.charset.StandardCharsets; public class APIClient { public static void main(String[] args) { try { // 创建 URL 对象 URL url = new URL("https://api.example.com/endpoint"); // 打开连接 HttpURLConnection connection = (HttpURLConnection) url.openConnection(); // 设置请求方法等其他必要设置 connection.setRequestMethod("POST"); connection.setDoOutput(true); // 允许发送请求体 // 设置请求体内容 String requestBody = "param1=value1&param2=value2"; byte[] requestBodyBytes = requestBody.getBytes(StandardCharsets.UTF_8); connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); connection.setRequestProperty("Content-Length", String.valueOf(requestBodyBytes.length)); // 发送请求体 try (OutputStream outputStream = connection.getOutputStream()) { outputStream.write(requestBodyBytes); } // 发送请求 int responseCode = connection.getResponseCode(); // 处理响应等其他操作 // 关闭连接 connection.disconnect(); } catch (IOException e) { e.printStackTrace(); } } } ``` 上述代码中,我们使用 `setDoOutput(true)` 方法允许发送请求体,并设置了请求体的内容和型。 请根据您的实际需求选择适合的方法来传递参数。使用查询参数适用于 GET 请求,而使用请求体适用于 POST、PUT 等请求。根据您的 API 的要求,可能还需要设置其他的请求头或请求属性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值