在調(diào)用公眾號接口".$token."type=".$type;

創(chuàng)新互聯(lián)公司是一家專注于成都網(wǎng)站建設(shè)、成都網(wǎng)站制作與策劃設(shè)計(jì),隆德網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設(shè)十載,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:隆德等地區(qū)。隆德做網(wǎng)站價(jià)格咨詢:028-86922220
上傳永久素材文件總是返回 "{\"errcode\":41005,\"errmsg\":\"media data missing\"}"
經(jīng)過多次測試使用下面的方式,可以正常上傳
//調(diào)用測試
protected static $url;
protected static $delimiter;
protected static $instance;
public function index()
{
? ? static::$delimiter = uniqid();
$basename = Request::instance()-root();
if (pathinfo($basename, PATHINFO_EXTENSION) == 'php') {
$basename = dirname($basename);
}
? ? $result=$this-wxAddMaterial($token,$basename.'/upload/images/gnlog.jpg','image');
}
// 新增其他類型永久素材
public function wxAddMaterial($token,$filename='',$type='') {
// 設(shè)置請求參數(shù)
static::$url = "".$token."type=".$type;
$filePath = str_replace('\\', '/', $filename);
// 發(fā)送請求
$imginfo=pathinfo($filePath);
$fields = array(
? ? 'media'=file_get_contents(".".$filePath),
? ? 'filename'=$imginfo["basename"],
);
$res = $this-putPart( $fields);
// 發(fā)送請求
return $res;
}
//推送文件流
public function putPart($param) {
$post_data = static::buildData($param);
$curl = curl_init(static::$url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data);
curl_setopt($curl, CURLOPT_HTTPHEADER, [
? ? "Content-Type: multipart/form-data; boundary=" . static::$delimiter,
? ? "Content-Length: " . strlen($post_data)
]);
$response = curl_exec($curl);
curl_close($curl);
return $response;
}
//編譯請求頭格式和數(shù)據(jù)流
private static function buildData($param){
$data = '';
$eol = "\r\n";
$upload = $param['media'];
unset($param['media']);
foreach ($param as $name = $content) {
? ? $data .= "--" . static::$delimiter . "\r\n"
? ? ? ? . 'Content-Disposition: form-data; name="' . $name . "\"\r\n\r\n"
? ? ? ? . $content . "\r\n";
}
$data .= "--" . static::$delimiter . $eol
? ? . 'Content-Disposition: form-data; name="media"; filename="' . $param['filename'] . '"' . "\r\n"
? ? . 'Content-Type:application/octet-stream'."\r\n\r\n";
$data .= $upload . "\r\n";
$data .= "--" . static::$delimiter . "--\r\n";
return $data;
}
根據(jù)自己的實(shí)際情況稍作修改
$data = array('鍵名' = 鍵值,'鍵名' = 鍵值,);
$uri = '要發(fā)送的url';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $uri);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$return = curl_exec($ch);
curl_close($ch);
$return=json_decode($return,true);//客戶端返回的數(shù)據(jù)
var_dump($return);
這基本都是明文,有什么看不懂的呢,xajaxargs[]的參數(shù)是字符串"xjxqueryqcountrycode=86UDtdYAIyXWgAawcxVmQFYgVgB2BUMlZn=A3VSb1ZmBTBdNgUzADJTNFo8UzVVPwQ3smsto=8888message=ABCDEFGmsgLen=153imgcode=AAAAtoken=BBBBAGsBPAIyVGEJYgw6XW9UMwBlBGNRNwg5=WS9VaAtrAWEMIgdoVCFRPlA8VzgUDsEOQMzVWBbMAA2UGJbPFUwC2wHYQAx=WC5cYQo6UmcJYgQyATMBZlE3BWMCaFNg/q/xjxquery",這字符串里面的最后兩個(gè)等號左右包含一個(gè)32位編解碼的問題,由于不知道原來用的什么編解碼方法(因?yàn)槟銢]貼出完全的代碼),也沒那么多時(shí)間一個(gè)一個(gè)方法去試,所以不知道原文是什么。
不需要抓取數(shù)據(jù)的話,就只要分析一下對方網(wǎng)站表單需要的字段,然后把a(bǔ)ction的地址改成對方網(wǎng)站的就提交路徑就行了,但如果對方網(wǎng)站提交時(shí)要獲取cookie的話才需要用curl
模擬 post提交與該網(wǎng)站使用了何種技術(shù)無關(guān)。
自己寫的話可以參考
HttpWebRequest?request?=?(HttpWebRequest)?WebRequest.Create(jumpUrl);
HttpWebResponse?response?=?null;
request.Method?=?"GET";
request.ContentType?=?"application/x-www-form-urlencoded";
request.AllowAutoRedirect?=?true;????????????????????
request.Headers[HttpRequestHeader.Cookie]?=?VerifyCookice;
request.KeepAlive?=?true;
response?=?(HttpWebResponse)?request.GetResponse();
StreamReader?sr?=?new?StreamReader(response.GetResponseStream(),?Encoding.UTF8);
string?content?=?sr.ReadToEnd();
sr.Close();
response.Close();
當(dāng)然現(xiàn)在已有大神封裝了一下基本應(yīng)用,HttpHelper 使用起來更為簡單一些
網(wǎng)頁標(biāo)題:模擬表單提交數(shù)據(jù)php python模擬表單提交
鏈接分享:http://www.chinadenli.net/article46/dooeoeg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作、做網(wǎng)站、網(wǎng)站排名、自適應(yīng)網(wǎng)站、服務(wù)器托管、網(wǎng)站導(dǎo)航
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)