Appearance
转发图片消息
通过原始 XML 转发已收到的图片消息。
接口地址: POST /sendRecvImage
前置条件
- 微信实例已登录,并已获得可用
wId。 - 接收方
wcId可以是好友微信 ID,也可以是群 ID。 content需要来自已收到图片消息的回调 XML。- 该接口用于复用已收到的图片消息;发送新图片请用发送图片。
请求参数
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| wId | 是 | string | 登录实例标识 |
| wcId | 是 | string | 接收方微信 ID 或群 ID |
| content | 是 | string | 图片消息 XML 内容 |
响应参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| code | string | 1000 成功;其他值都是失败,通常是 1001 |
| message | string | 反馈信息 |
| data.type | int | 类型 |
| data.msgId | long | 消息 ID |
| data.newMsgId | long | 新消息 ID |
| data.createTime | long | 发送时间戳(秒) |
| data.wcId | string | 接收方 ID |
请求示例
http
POST {BASE_URL}/sendRecvImage
Authorization: Bearer <你的调用凭证>
Content-Type: application/json
{
"wId": "0000016f-4621-dde5-0002-390493cab4dc",
"wcId": "zhongweiyu789",
"content": "<?xml version=\"1.0\"?>\n<msg>\n\t<img aeskey=\"849481a442044ad3a3a8130c94d2b591\" encryver=\"0\" cdnthumbaeskey=\"849481a442044ad3a3a8130c94d2b591\" cdnthumburl=\"3053020100044c304a0201000204e7d9caed02032f55f90204900060b402045e05acc00425617570696d675f386634626639356134343465613063665f31353737343330323038303739020401053a010201000400\" cdnthumblength=\"3310\" cdnthumbheight=\"80\" cdnthumbwidth=\"120\" cdnmidheight=\"0\" cdnmidwidth=\"0\" cdnhdheight=\"0\" cdnhdwidth=\"0\" cdnmidimgurl=\"3053020100044c304a0201000204e7d9caed02032f55f90204900060b402045e05acc00425617570696d675f386634626639356134343465613063665f31353737343330323038303739020401053a010201000400\" length=\"19842\" cdnbigimgurl=\"3053020100044c304a0201000204e7d9caed02032f55f90204900060b402045e05acc00425617570696d675f386634626639356134343465613063665f31353737343330323038303739020401053a010201000400\" hdlength=\"99007\" md5=\"39fec3c8e1ebad09ef4289b9e712a716\" hevc_mid_size=\"13869\" /> -->\n</msg>\n"
}bash
curl -X POST '{BASE_URL}/sendRecvImage' \
-H 'Authorization: Bearer <你的调用凭证>' \
-H 'Content-Type: application/json' \
--data-raw '{
"wId": "0000016f-4621-dde5-0002-390493cab4dc",
"wcId": "zhongweiyu789",
"content": "<?xml version=\"1.0\"?>\n<msg>\n\t<img aeskey=\"849481a442044ad3a3a8130c94d2b591\" encryver=\"0\" cdnthumbaeskey=\"849481a442044ad3a3a8130c94d2b591\" cdnthumburl=\"3053020100044c304a0201000204e7d9caed02032f55f90204900060b402045e05acc00425617570696d675f386634626639356134343465613063665f31353737343330323038303739020401053a010201000400\" cdnthumblength=\"3310\" cdnthumbheight=\"80\" cdnthumbwidth=\"120\" cdnmidheight=\"0\" cdnmidwidth=\"0\" cdnhdheight=\"0\" cdnhdwidth=\"0\" cdnmidimgurl=\"3053020100044c304a0201000204e7d9caed02032f55f90204900060b402045e05acc00425617570696d675f386634626639356134343465613063665f31353737343330323038303739020401053a010201000400\" length=\"19842\" cdnbigimgurl=\"3053020100044c304a0201000204e7d9caed02032f55f90204900060b402045e05acc00425617570696d675f386634626639356134343465613063665f31353737343330323038303739020401053a010201000400\" hdlength=\"99007\" md5=\"39fec3c8e1ebad09ef4289b9e712a716\" hevc_mid_size=\"13869\" /> -->\n</msg>\n"
}'python
import requests
url = "{BASE_URL}/sendRecvImage"
headers = {"Authorization": "Bearer <你的调用凭证>", "Content-Type": "application/json"}
body = r"""{
"wId": "0000016f-4621-dde5-0002-390493cab4dc",
"wcId": "zhongweiyu789",
"content": "<?xml version=\"1.0\"?>\n<msg>\n\t<img aeskey=\"849481a442044ad3a3a8130c94d2b591\" encryver=\"0\" cdnthumbaeskey=\"849481a442044ad3a3a8130c94d2b591\" cdnthumburl=\"3053020100044c304a0201000204e7d9caed02032f55f90204900060b402045e05acc00425617570696d675f386634626639356134343465613063665f31353737343330323038303739020401053a010201000400\" cdnthumblength=\"3310\" cdnthumbheight=\"80\" cdnthumbwidth=\"120\" cdnmidheight=\"0\" cdnmidwidth=\"0\" cdnhdheight=\"0\" cdnhdwidth=\"0\" cdnmidimgurl=\"3053020100044c304a0201000204e7d9caed02032f55f90204900060b402045e05acc00425617570696d675f386634626639356134343465613063665f31353737343330323038303739020401053a010201000400\" length=\"19842\" cdnbigimgurl=\"3053020100044c304a0201000204e7d9caed02032f55f90204900060b402045e05acc00425617570696d675f386634626639356134343465613063665f31353737343330323038303739020401053a010201000400\" hdlength=\"99007\" md5=\"39fec3c8e1ebad09ef4289b9e712a716\" hevc_mid_size=\"13869\" /> -->\n</msg>\n"
}"""
resp = requests.post(url, headers=headers, data=body.encode("utf-8"))
print(resp.text)java
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
String url = "{BASE_URL}/sendRecvImage";
String body = "{\n" +
" \"wId\": \"0000016f-4621-dde5-0002-390493cab4dc\",\n" +
" \"wcId\": \"zhongweiyu789\",\n" +
" \"content\": \"<?xml version=\\\"1.0\\\"?>\\n<msg>\\n\\t<img aeskey=\\\"849481a442044ad3a3a8130c94d2b591\\\" encryver=\\\"0\\\" cdnthumbaeskey=\\\"849481a442044ad3a3a8130c94d2b591\\\" cdnthumburl=\\\"3053020100044c304a0201000204e7d9caed02032f55f90204900060b402045e05acc00425617570696d675f386634626639356134343465613063665f31353737343330323038303739020401053a010201000400\\\" cdnthumblength=\\\"3310\\\" cdnthumbheight=\\\"80\\\" cdnthumbwidth=\\\"120\\\" cdnmidheight=\\\"0\\\" cdnmidwidth=\\\"0\\\" cdnhdheight=\\\"0\\\" cdnhdwidth=\\\"0\\\" cdnmidimgurl=\\\"3053020100044c304a0201000204e7d9caed02032f55f90204900060b402045e05acc00425617570696d675f386634626639356134343465613063665f31353737343330323038303739020401053a010201000400\\\" length=\\\"19842\\\" cdnbigimgurl=\\\"3053020100044c304a0201000204e7d9caed02032f55f90204900060b402045e05acc00425617570696d675f386634626639356134343465613063665f31353737343330323038303739020401053a010201000400\\\" hdlength=\\\"99007\\\" md5=\\\"39fec3c8e1ebad09ef4289b9e712a716\\\" hevc_mid_size=\\\"13869\\\" /> -->\\n</msg>\\n\"\n" +
"}";
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder(URI.create(url))
.header("Authorization", "Bearer <你的调用凭证>")
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(body))
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());php
<?php
$url = '{BASE_URL}/sendRecvImage';
$body = <<<'JSON'
{
"wId": "0000016f-4621-dde5-0002-390493cab4dc",
"wcId": "zhongweiyu789",
"content": "<?xml version=\"1.0\"?>\n<msg>\n\t<img aeskey=\"849481a442044ad3a3a8130c94d2b591\" encryver=\"0\" cdnthumbaeskey=\"849481a442044ad3a3a8130c94d2b591\" cdnthumburl=\"3053020100044c304a0201000204e7d9caed02032f55f90204900060b402045e05acc00425617570696d675f386634626639356134343465613063665f31353737343330323038303739020401053a010201000400\" cdnthumblength=\"3310\" cdnthumbheight=\"80\" cdnthumbwidth=\"120\" cdnmidheight=\"0\" cdnmidwidth=\"0\" cdnhdheight=\"0\" cdnhdwidth=\"0\" cdnmidimgurl=\"3053020100044c304a0201000204e7d9caed02032f55f90204900060b402045e05acc00425617570696d675f386634626639356134343465613063665f31353737343330323038303739020401053a010201000400\" length=\"19842\" cdnbigimgurl=\"3053020100044c304a0201000204e7d9caed02032f55f90204900060b402045e05acc00425617570696d675f386634626639356134343465613063665f31353737343330323038303739020401053a010201000400\" hdlength=\"99007\" md5=\"39fec3c8e1ebad09ef4289b9e712a716\" hevc_mid_size=\"13869\" /> -->\n</msg>\n"
}
JSON;
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $body);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Authorization: Bearer <你的调用凭证>',
'Content-Type: application/json',
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
echo $response;成功响应
json
{
"code": "1000",
"message": "转发图片消息成功",
"data": {
"type": null,
"msgId": 697760529,
"newMsgId": 8689175729438895373,
"createTime": 0,
"wcId": "zhongweiyu789"
}
}错误响应
json
{
"message": "失败",
"code": "1001",
"data": null
}使用建议
- 建议保存原始图片消息 XML,转发时直接使用,避免 CDN 字段缺失。
- 图片 CDN 资源可能过期,过期后建议重新发送新图片或重新获取资源。
- 转发成功后保存
msgId、newMsgId、createTime,便于撤回或追踪。