請(qǐng)求API:https://api.weixin.qq.com/wxa/img_sec_check?access_token=token
問(wèn)題:用postman模擬get和post請(qǐng)求都有返回
$url = 'https://api.weixin.qq.com/wxa/img_sec_check?access_token=611';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_HEADER, $header);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
$output = curl_exec($ch);
curl_close($ch);
return $output;
token可以用錯(cuò)誤的,微信都會(huì)返回狀態(tài)碼
但是我在框架里通過(guò)curl模擬請(qǐng)求,無(wú)論token是否正確,圖片傳遞與否,返回值均為“”【空的】
群里有人出現(xiàn)類(lèi)型情況,postman測(cè)試,都是正常的。如果在webman框架通過(guò)curl模擬get請(qǐng)求(正常)post請(qǐng)求(返回空,不正常),代碼確信100%無(wú)誤,本人已困擾一下午沒(méi)解決,不清楚是哪里問(wèn)題,示例代碼是從以前正常業(yè)務(wù)代碼復(fù)制過(guò)來(lái)的
難道是微信api攔截了webman框架發(fā)起來(lái)的請(qǐng)求?
這里寫(xiě)具體的系統(tǒng)環(huán)境相關(guān)信息
不用問(wèn)微信API,傳遞token錯(cuò)誤或者圖片沒(méi)有傳遞之類(lèi)的,任何參數(shù)錯(cuò)誤,微信都會(huì)有返回值的。示例是測(cè)試微信返回值的,在webman框架里無(wú)論怎么傳遞,微信返回“”【空】,如果在postman里測(cè)試請(qǐng)求,都會(huì)有返回值的
token用正確或者錯(cuò)誤的,全部都是一樣返回"",bug與api參數(shù)正確與否無(wú)關(guān),可能跟webman框架有關(guān)
代碼檢查一下午,確信無(wú)誤。curl代碼也正確。以前通過(guò)tp5請(qǐng)求有返回值,復(fù)制到webman請(qǐng)求,無(wú)返回值,微信返回“”
我沒(méi)傳圖片,我知道沒(méi)傳,現(xiàn)在問(wèn)題是,無(wú)論傳沒(méi)傳,微信api連個(gè)錯(cuò)誤也不給你, curl直接給“”
不是{"file":null}問(wèn)題, 哥,是webman通過(guò)curl調(diào)用微信api,返回“”, tp5原生框架,返回正常的
問(wèn)題:webman框架curl請(qǐng)求微信api,微信給我返回“”【空】,其它tp5框架或php單個(gè)文件返回測(cè)試均為正常
$access_token = 'xxx';
$path = '文件絕對(duì)路徑';
curl("https://api.weixin.qq.com/wxa/img_sec_check?access_token=$access_token", ['media' => new \CURLFile($path)]);
function curl($url, $data = [])
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$result = curl_exec($ch);
curl_close($ch);
return $result;
}
我們項(xiàng)目在用webman框架做小程序鑒黃,唯一注意的是php-cli里文件路徑要用絕對(duì)路徑,其它和php-fpm一樣,沒(méi)區(qū)別。
$path是絕對(duì)路徑, 從C:盤(pán)根符開(kāi)始的, 文件還用file_exists($path)檢測(cè)了, 返回1, 確定是正確的絕對(duì)路徑
看別人遇到過(guò)類(lèi)似問(wèn)題 https://developers.weixin.qq.com/community/develop/doc/0006866c67008018750a876355fc00?_at=1672915263294
我剛剛弄個(gè)錯(cuò)誤的token請(qǐng)求過(guò)去,也是返回空,不報(bào)token無(wú)效。如果把CURLFile那兩行代碼注釋了,請(qǐng)求過(guò)去,微信返回token無(wú)效invalid credential, access_token is invalid
//$obj = new \CURLFile(realpath($img_path));
//$obj->setMimeType("image/jpeg");
還是和這兩行代碼有關(guān),我無(wú)語(yǔ)了,開(kāi)啟后,請(qǐng)求貌似不能正常發(fā)過(guò)去,curl我是復(fù)制你的【這肯定沒(méi)錯(cuò)】,注釋就正常請(qǐng)求
一樣的,早就試過(guò)了,new \CURLFile(realpath($img_path)); 這里面是絕對(duì)路徑,傳參確定無(wú)誤,curl跟你一樣復(fù)制,我感覺(jué)我環(huán)境有問(wèn)題
我從中午1點(diǎn),調(diào)試這個(gè)bug到現(xiàn)在,其它代碼環(huán)節(jié)檢查無(wú)數(shù)次,沒(méi)問(wèn)題。就是開(kāi)啟CURLFile就不行了,就是這個(gè)的問(wèn)題,開(kāi)啟后,請(qǐng)求發(fā)不過(guò)去,圖片25kb,curl代碼正確