file_get_contents版本: 1 /* * 2 * 发送post请求 3 * @param string $url 请求地址 4 * @param array $post_data post键值对数据 5 * @return string 6 */ 7 function send_post( $url , $post_data ) { 8 9 $postdata = http_build_query ( $post_data );
file_get_contents版本:
<span> 1</span> <span>/*</span><span>* </span><span> 2</span> <span> * 发送post请求 </span><span> 3</span> <span> * @param string $url 请求地址 </span><span> 4</span> <span> * @param array $post_data post键值对数据 </span><span> 5</span> <span> * @return string </span><span> 6</span> <span>*/</span> <span> 7</span> <span>function</span> send_post(<span>$url</span>, <span>$post_data</span><span>) { </span><span> 8</span> <span> 9</span> <span>$postdata</span> = <span>http_build_query</span>(<span>$post_data</span><span>); </span><span>10</span> <span>$options</span> = <span>array</span><span>( </span><span>11</span> 'http' =>; <span>array</span><span>( </span><span>12</span> 'method' =>; 'POST', <span>13</span> 'header' =>; 'Content-type:application/x-www-form-urlencoded', <span>14</span> 'content' =>; <span>$postdata</span>, <span>15</span> 'timeout' =>; 15 * 60 <span>//</span><span> 超时时间(单位:s)</span> <span>16</span> <span> ) </span><span>17</span> <span> ); </span><span>18</span> <span>$context</span> = <span>stream_context_create</span>(<span>$options</span><span>); </span><span>19</span> <span>$result</span> = <span>file_get_contents</span>(<span>$url</span>, <span>false</span>, <span>$context</span><span>); </span><span>20</span> <span>21</span> <span>return</span> <span>$result</span><span>; </span><span>22</span> }
使用如下:
<span>1</span> post_data = <span>array</span><span>( </span><span>2</span> 'username' => 'stclair2201', <span>3</span> 'password' => 'handan' <span>4</span> <span>); </span><span>5</span> send_post('http://blog.snsgou.com', <span>$post_data</span>);
实战经验:
当我利用上述代码给另一台服务器发送http请求时,发现,如果服务器处理请求时间过长,本地的PHP会中断请求,即所谓的超时中断,第一个怀疑的是PHP本身执行时间的超过限制,但想想也不应该,因为老早就按照这篇文章设置了“PHP执行时间限制”(【推荐】PHP上传文件大小限制大全 ),仔细琢磨,想想,应该是http请求本身的一个时间限制,于是乎,就想到了怎么给http请求时间限制搞大一点。。。。。。查看PHP手册,果真有个参数 “ timeout ”,默认不知道多大,当把它的值设大一点,问题得已解决,弱弱地做个笔记~~~
Socket版本:
<span> 1</span> <span>/*</span><span>* </span><span> 2</span> <span> * Socket版本 </span><span> 3</span> <span> * 使用方法: </span><span> 4</span> <span> * $post_string = "app=socket&version=beta"; </span><span> 5</span> <span> * request_by_socket('blog.snsgou.com', '/restServer.php', $post_string); </span><span> 6</span> <span>*/</span> <span> 7</span> <span>function</span> request_by_socket(<span>$remote_server</span>,<span>$remote_path</span>,<span>$post_string</span>,<span>$port</span> = 80,<span>$timeout</span> = 30<span>) { </span><span> 8</span> <span>$socket</span> = <span>fsockopen</span>(<span>$remote_server</span>, <span>$port</span>, <span>$errno</span>, <span>$errstr</span>, <span>$timeout</span><span>); </span><span> 9</span> <span>if</span> (!<span>$socket</span>) <span>die</span>("<span>$errstr</span>(<span>$errno</span>)"<span>); </span><span>10</span> <span>fwrite</span>(<span>$socket</span>, "POST <span>$remote_path</span> HTTP/1.0"<span>); </span><span>11</span> <span>fwrite</span>(<span>$socket</span>, "User-Agent: Socket Example"<span>); </span><span>12</span> <span>fwrite</span>(<span>$socket</span>, "HOST: <span>$remote_server</span>"<span>); </span><span>13</span> <span>fwrite</span>(<span>$socket</span>, "Content-type: application/x-www-form-urlencoded"<span>); </span><span>14</span> <span>fwrite</span>(<span>$socket</span>, "Content-length: " . (<span>strlen</span>(<span>$post_string</span>) + 8) . ""<span>); </span><span>15</span> <span>fwrite</span>(<span>$socket</span>, "Accept:*/*"<span>); </span><span>16</span> <span>fwrite</span>(<span>$socket</span>, ""<span>); </span><span>17</span> <span>fwrite</span>(<span>$socket</span>, "mypost=<span>$post_string</span>"<span>); </span><span>18</span> <span>fwrite</span>(<span>$socket</span>, ""<span>); </span><span>19</span> <span>$header</span> = ""<span>; </span><span>20</span> <span>while</span> (<span>$str</span> = <span>trim</span>(<span>fgets</span>(<span>$socket</span>, 4096<span>))) { </span><span>21</span> <span>$header</span> .= <span>$str</span><span>; </span><span>22</span> <span> } </span><span>23</span> <span>24</span> <span>$data</span> = ""<span>; </span><span>25</span> <span>while</span> (!<span>feof</span>(<span>$socket</span><span>)) { </span><span>26</span> <span>$data</span> .= <span>fgets</span>(<span>$socket</span>, 4096<span>); </span><span>27</span> <span> } </span><span>28</span> <span>29</span> <span>return</span> <span>$data</span><span>; </span><span>30</span> }
Curl版本:
<span> 1</span> <span>/*</span><span>* </span><span> 2</span> <span> * Curl版本 </span><span> 3</span> <span> * 使用方法: </span><span> 4</span> <span> * $post_string = "app=request&version=beta"; </span><span> 5</span> <span> * request_by_curl('http://blog.snsgou.com/restServer.php', $post_string); </span><span> 6</span> <span>*/</span> <span> 7</span> <span>function</span> request_by_curl(<span>$remote_server</span>, <span>$post_string</span><span>) { </span><span> 8</span> <span>$ch</span> =<span> curl_init(); </span><span> 9</span> curl_setopt(<span>$ch</span>, CURLOPT_URL, <span>$remote_server</span><span>); </span><span>10</span> curl_setopt(<span>$ch</span>, CURLOPT_POSTFIELDS, 'mypost=' . <span>$post_string</span><span>); </span><span>11</span> curl_setopt(<span>$ch</span>, CURLOPT_RETURNTRANSFER, <span>true</span><span>); </span><span>12</span> curl_setopt(<span>$ch</span>, CURLOPT_USERAGENT, "snsgou.com's CURL Example beta"<span>); </span><span>13</span> <span>$data</span> = curl_exec(<span>$ch</span><span>); </span><span>14</span> curl_close(<span>$ch</span><span>); </span><span>15</span> <span>16</span> <span>return</span> <span>$data</span><span>; </span><span>17</span> }
Curl版本(2)
<span> 1</span> <span>/*</span><span>* </span><span> 2</span> <span> * 发送HTTP请求 </span><span> 3</span> <span> * </span><span> 4</span> <span> * @param string $url 请求地址 </span><span> 5</span> <span> * @param string $method 请求方式 GET/POST </span><span> 6</span> <span> * @param string $refererUrl 请求来源地址 </span><span> 7</span> <span> * @param array $data 发送数据 </span><span> 8</span> <span> * @param string $contentType </span><span> 9</span> <span> * @param string $timeout </span><span>10</span> <span> * @param string $proxy </span><span>11</span> <span> * @return boolean </span><span>12</span> <span>*/</span> <span>13</span> <span>function</span> send_request(<span>$url</span>, <span>$data</span>, <span>$refererUrl</span> = '', <span>$method</span> = 'GET', <span>$contentType</span> = 'application/json', <span>$timeout</span> = 30, <span>$proxy</span> = <span>false</span><span>) { </span><span>14</span> <span>$ch</span> = <span>null</span><span>; </span><span>15</span> <span>if</span>('POST' === <span>strtoupper</span>(<span>$method</span><span>)) { </span><span>16</span> <span>$ch</span> = curl_init(<span>$url</span><span>); </span><span>17</span> curl_setopt(<span>$ch</span>, CURLOPT_POST, 1<span>); </span><span>18</span> curl_setopt(<span>$ch</span>, CURLOPT_HEADER,0<span> ); </span><span>19</span> curl_setopt(<span>$ch</span>, CURLOPT_FRESH_CONNECT, 1<span>); </span><span>20</span> curl_setopt(<span>$ch</span>, CURLOPT_RETURNTRANSFER, 1<span>); </span><span>21</span> curl_setopt(<span>$ch</span>, CURLOPT_FORBID_REUSE, 1<span>); </span><span>22</span> curl_setopt(<span>$ch</span>, CURLOPT_TIMEOUT, <span>$timeout</span><span>); </span><span>23</span> <span>if</span> (<span>$refererUrl</span><span>) { </span><span>24</span> curl_setopt(<span>$ch</span>, CURLOPT_REFERER, <span>$refererUrl</span><span>); </span><span>25</span> <span> } </span><span>26</span> <span>if</span>(<span>$contentType</span><span>) { </span><span>27</span> curl_setopt(<span>$ch</span>, CURLOPT_HTTPHEADER, <span>array</span>('Content-Type:'.<span>$contentType</span><span>)); </span><span>28</span> <span> } </span><span>29</span> <span>if</span>(<span>is_string</span>(<span>$data</span><span>)){ </span><span>30</span> curl_setopt(<span>$ch</span>, CURLOPT_POSTFIELDS, <span>$data</span><span>); </span><span>31</span> } <span>else</span><span> { </span><span>32</span> curl_setopt(<span>$ch</span>, CURLOPT_POSTFIELDS, <span>http_build_query</span>(<span>$data</span><span>)); </span><span>33</span> <span> } </span><span>34</span> } <span>else</span> <span>if</span>('GET' === <span>strtoupper</span>(<span>$method</span><span>)) { </span><span>35</span> <span>if</span>(<span>is_string</span>(<span>$data</span><span>)) { </span><span>36</span> <span>$real_url</span> = <span>$url</span>. (<span>strpos</span>(<span>$url</span>, '?') === <span>false</span> ? '?' : ''). <span>$data</span><span>; </span><span>37</span> } <span>else</span><span> { </span><span>38</span> <span>$real_url</span> = <span>$url</span>. (<span>strpos</span>(<span>$url</span>, '?') === <span>false</span> ? '?' : ''). <span>http_build_query</span>(<span>$data</span><span>); </span><span>39</span> <span> } </span><span>40</span> <span>41</span> <span>$ch</span> = curl_init(<span>$real_url</span><span>); </span><span>42</span> curl_setopt(<span>$ch</span>, CURLOPT_HEADER, 0<span>); </span><span>43</span> curl_setopt(<span>$ch</span>, CURLOPT_HTTPHEADER, <span>array</span>('Content-Type:'.<span>$contentType</span><span>)); </span><span>44</span> curl_setopt(<span>$ch</span>, CURLOPT_RETURNTRANSFER, 1<span>); </span><span>45</span> curl_setopt(<span>$ch</span>, CURLOPT_TIMEOUT, <span>$timeout</span><span>); </span><span>46</span> <span>if</span> (<span>$refererUrl</span><span>) { </span><span>47</span> curl_setopt(<span>$ch</span>, CURLOPT_REFERER, <span>$refererUrl</span><span>); </span><span>48</span> <span> } </span><span>49</span> } <span>else</span><span> { </span><span>50</span> <span>$args</span> = <span>func_get_args</span><span>(); </span><span>51</span> <span>return</span> <span>false</span><span>; </span><span>52</span> <span> } </span><span>53</span> <span>54</span> <span>if</span>(<span>$proxy</span><span>) { </span><span>55</span> curl_setopt(<span>$ch</span>, CURLOPT_PROXY, <span>$proxy</span><span>); </span><span>56</span> <span> } </span><span>57</span> <span>$ret</span> = curl_exec(<span>$ch</span><span>); </span><span>58</span> <span>$info</span> = curl_getinfo(<span>$ch</span><span>); </span><span>59</span> <span>$contents</span> = <span>array</span><span>( </span><span>60</span> 'httpInfo' => <span>array</span><span>( </span><span>61</span> 'send' => <span>$data</span>, <span>62</span> 'url' => <span>$url</span>, <span>63</span> 'ret' => <span>$ret</span>, <span>64</span> 'http' => <span>$info</span>, <span>65</span> <span> ) </span><span>66</span> <span> ); </span><span>67</span> <span>68</span> curl_close(<span>$ch</span><span>); </span><span>69</span> <span>return</span> <span>$ret</span><span>; </span><span>70</span> }
调用 WCF接口 的一个例子:$json = restRequest($r_url,'POST', json_encode($data));

技嘉的主板怎么设置键盘开机首先,要支持键盘开机,一定是PS2键盘!!设置步骤如下:第一步:开机按Del或者F2进入bios,到bios的Advanced(高级)模式普通主板默认进入主板的EZ(简易)模式,需要按F7切换到高级模式,ROG系列主板默认进入bios的高级模式(我们用简体中文来示范)第二步:选择到——【高级】——【高级电源管理(APM)】第三步:找到选项【由PS2键盘唤醒】第四步:这个选项默认是Disabled(关闭)的,下拉之后可以看到三种不同的设置选择,分别是按【空格键】开机、按组

php把负数转为正整数的方法:1、使用abs()函数将负数转为正数,使用intval()函数对正数取整,转为正整数,语法“intval(abs($number))”;2、利用“~”位运算符将负数取反加一,语法“~$number + 1”。

Win11怎么退版本?很多朋友在升级了win11后认为其不好用,那么大家可以选择退回之前的版本哦。那么你知道该如何操作嘛?很多用户都不知道,其实方法并不难,下面小编给大家带来退回Win10的方法分享,一起来学习吧。退回Win10的方法分享1、进入“设置”。2、选择“WindowsUpdate”,然后点击“恢复”。3、在“恢复选项”中选择“以前版本的Windows”,点击“返回”。4、选择原因,然后点击“下一步”。5、你将看到“检查更新”的通知,选择“不,谢谢”。6、阅读需要了解的内容,然后点击“

神舟炫龙m7独显直连怎么开要开启神舟炫龙m7的独立显卡直连功能,您可以按照以下步骤进行操作:1.首先,确保您已经安装好了独立显卡的驱动程序。您可以前往神舟官方网站或独立显卡厂商官网下载并安装适合您显卡型号的最新驱动程序。2.在电脑桌面上,右键单击空白处,在弹出的菜单中选择“NVIDIA控制面板”(如果是AMD显卡,则选择“AMDRadeon设置”)。3.在控制面板中,找到“3D设置”或类似命名的选项,点击进入。4.在“3D设置”中,您需要找到“全局设置”或类似命名的选项。在这里,您可以指定使用独

php判断有没有小数点的方法:1、使用“strpos(数字字符串,'.')”语法,如果返回小数点在字符串中第一次出现的位置,则有小数点;2、使用“strrpos(数字字符串,'.')”语句,如果返回小数点在字符串中最后一次出现的位置,则有。

在PHP中,可以利用implode()函数的第一个参数来设置没有分隔符,该函数的第一个参数用于规定数组元素之间放置的内容,默认是空字符串,也可将第一个参数设置为空,语法为“implode(数组)”或者“implode("",数组)”。

耐克作为全球知名的运动品牌,其鞋子备受瞩目。然而,市场上也存在大量的假冒伪劣商品,其中就包括假冒的耐克鞋盒。辨别真假鞋盒对于保护消费者的权益至关重要。本文将为您提供一些简单而有效的方法,以帮助您辨别真假鞋盒。一:外包装标题通过观察耐克鞋盒的外包装,可以发现许多细微的差异。真正的耐克鞋盒通常具有高品质的纸质材料,手感光滑,且没有明显的刺激性气味。正品鞋盒上的字体和标志通常清晰、精细,并且没有模糊或颜色不协调的情况。二:LOGO烫金标题耐克鞋盒上的LOGO通常是烫金工艺,真品鞋盒上的烫金部分会呈现出

拯救者y7000p玩cf分辨率多少拯救者Y7000P玩CF的分辨率为1920*1080。因为该电脑配备了GTX1650显卡和i5-9300H处理器,性能较为优秀,足以满足CF这类游戏的需求。同时,1920*1080是目前主流电竞显示器的分辨率,画质清晰度足够。另外,如果有更高要求的玩家,可以适当降低游戏画质的设置,以获得更加流畅的游戏体验。为了享受更清晰的视觉体验,你可以将拯救者y7000p的分辨率调整为2560*1400。这样,你将能够享受到更高质量的图像显示。拯救者Y7000P2022款搭载


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

Dreamweaver Mac版
視覺化網頁開發工具