投稿データをhttpsに投稿する際のアドバイスをお願いします。
WeChat のカスタム メニューを作成しようとしていますが、失敗しました。アドバイスをいただければ幸いです。
インターフェースの説明
特定の構造を POST して、WeChat クライアント上にカスタム メニューを作成します。
リクエスト手順
http リクエストメソッド: POST
https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN
リクエスト例
{
"button":[
"{
" " type":"click"、
"name":"今日の曲"、
"key":"V1001_TODAY_MUSIC"
"type":"click"、
"name":"歌手プロフィール"、
"key" :"V1001_TODAY_SINGER"
「type」:"click"、
"name":"hello word"、
" key":"V1001_HELLO_WORLD
「key」:「V1001_GOOD」
コードは次のとおりです:
$xjson = ' { "button":[ { "type":"click", "name":"todaymusic", "key":"V1001_TODAY_MUSIC" }, { "type":"click", "name":"singer", "key":"V1001_TODAY_SINGER" }, { "name":"menu", "sub_button":[ { "type":"click", "name":"hello word", "key":"V1001_HELLO_WORLD" }, { "type":"click", "name":"best", "key":"V1001_GOOD" }] }] }';$url = "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=******";$context = json_decode($xjson,true);$data = http_build_query($context);$result = vpost($url,$data);var_dump($result);function vpost($url,$data){ // 模拟提交数据函数 $curl = curl_init(); // 启动一个CURL会话 curl_setopt($curl, CURLOPT_URL, $url); // 要访问的地址 curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE); // 对认证证书来源的检查 curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE); // 从证书中检查SSL加密算法是否存在 curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; MSIE 5.01; Windows NT 5.0)'); // 模拟用户使用的浏览器 // curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转 // curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自动设置Referer curl_setopt($curl, CURLOPT_POST, 1); // 发送一个常规的Post请求 curl_setopt($curl, CURLOPT_POSTFIELDS, $data); // Post提交的数据包 curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 设置超时限制防止死循环 curl_setopt($curl, CURLOPT_HEADER, 0); // 显示返回的Header区域内容 curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回 $tmpInfo = curl_exec($curl); // 执行操作 if (curl_errno($curl)) { echo 'Errno'.curl_error($curl);//捕抓异常 } curl_close($curl); // 关闭CURL会话 return $tmpInfo; // 返回数据}
失敗し、「{"errcode":40016,"errmsg":"invalid button size"}」というプロンプトが表示されます
お聞きしたいのですが、
1. このコード自体に問題はありますか?
2. ローカル環境は https をサポートする必要がありますか?
ディスカッションへの返信 (解決策)
問題は、私が経験したことのない POST のデータ形式にあります。このエラーは、JSON 内のボタンの数が多いか少ないことを意味します。
このプロンプトは非常に明確である必要があります。 "errcode":40016,"errmsg":"invalid button size"}"
ボタンの数が不正です
プロンプトからは、API リターンのようなカール エラーのようには見えません。そうであれば、それは意味します。送信されましたが、データ形式が間違っています
でも、もう一つ質問があるのですが、httpsは直接送信できますか?
投稿者は問題を解決しましたか?私も同じエラーが発生します。メニューの数に問題はないはずです
これは簡単です。詳細については、QQ: 651732826 までお問い合わせください。私もこの問題に遭遇しましたが、解決しましたか?アドバイスをいただけますか?ありがとう!
ああ、私もこの問題に遭遇しました
私もです。 。 。
私もです!!!
import java.io.IOException;import org.apache.commons.httpclient.HttpClient;import org.apache.commons.httpclient.HttpException;import org.apache.commons.httpclient.methods.PostMethod;public class wx_menu{ public static void main(String[] args){ String url = "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=Sv1MA_nwKURUfNUWEusf0IOu6DpAJTQIuR0kLZ4xnj283_o9wDTS8WsLRM-AQ9q36OoWj09gbLgJit5LCZwfV9eHpbn3f4ARrlUsU-JaOxn_khR4Qnm0UDXz6NCG06PP6J3U4rP-x-kJvl87Nzb87Q"; /** * 设置菜单 * 在为什么用\"你懂得,这是java代码 */ String responeJsonStr = "{"+ "\"button\":["+ "{\"name\":\"菜单名称1\","+ "\"type\":\"click\"," + "\"key\":\"V01_S01\"" + "},"+ "{\"name\":\"菜单名称2\","+ "\"type\":\"click\"," + "\"key\":\"V02_S01\"" + "},"+ "{\"name\":\"菜单名称1\","+ "\"type\":\"click\"," + "\"key\":\"V03_S01\"" + "}"+ "]"+ "}"; HttpClient client = new HttpClient(); PostMethod post = new PostMethod(url); post.setRequestBody(responeJsonStr); post.getParams().setContentCharset("utf-8"); //发送http请求 String respStr = ""; try { client.executeMethod(post); respStr = post.getResponseBodyAsString(); } catch (HttpException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } System.out.println(responeJsonStr); System.out.println(respStr); } }
PHP コードが見つかりました。
http://liyandong.duapp.com/?m=study
PHPで書き始めましたが、解決できませんでした。その後、Linuxに切り替えてcurlを直接使用して解決しましたが、中国語のエンコードに注意する必要があります。
これは私がやったことです: json 文字列を記述し、スペースと改行を含まないバージョンを取得し、Linux で Curl を使用します。 コードは次のとおりです。
curl -d '{ "button":[ { "name ":"Health Query", "sub_button":[ { "....' https://api.weixin.qq.com/cgi-bin/menu/create?access_token=xxxx
に注意してください-d これは一重引用符であり、それ以外の場合は invlide ボタン サイズ 40016 です。
これが役立つことを願っています
私は解決しました:
https、{"errcode":40016,"errmsg": への投稿データの送信の問題。 "無効なボタン サイズ"}
http://blog.csdn.net/e421083458/article/details/14649129

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









PHPクライアントURL(CURL)拡張機能は、開発者にとって強力なツールであり、リモートサーバーやREST APIとのシームレスな対話を可能にします。尊敬されるマルチプロトコルファイル転送ライブラリであるLibcurlを活用することにより、PHP Curlは効率的なexecuを促進します

顧客の最も差し迫った問題にリアルタイムでインスタントソリューションを提供したいですか? ライブチャットを使用すると、顧客とのリアルタイムな会話を行い、すぐに問題を解決できます。それはあなたがあなたのカスタムにより速いサービスを提供することを可能にします

記事では、PHP 5.3で導入されたPHPの後期静的結合(LSB)について説明し、より柔軟な継承を求める静的メソッドコールのランタイム解像度を可能にします。 LSBの実用的なアプリケーションと潜在的なパフォーマ

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

記事では、入力検証、認証、定期的な更新など、脆弱性から保護するためのフレームワークの重要なセキュリティ機能について説明します。

この記事では、フレームワークにカスタム機能を追加し、アーキテクチャの理解、拡張ポイントの識別、統合とデバッグのベストプラクティスに焦点を当てています。

PHP開発でPHPのCurlライブラリを使用してJSONデータを送信すると、外部APIと対話する必要があることがよくあります。一般的な方法の1つは、Curlライブラリを使用して投稿を送信することです。
