执行curl发送APNS推送报错Could not resolve host如何修复
问题原因
你遇到的错误由curl命令的参数格式错误直接导致:
--header参数的键值对没有用引号包裹,shell会把空格作为参数分隔符,将apns-topic:后的com.domainname.appname、apns-push-type:后的alert识别为独立的请求地址,因此出现「Could not resolve host」报错。- 两个必要的请求头
apns-topic、apns-push-type没有被正确发送到APNS服务器,最终服务器返回MissingTopic错误。
修复方法
- 所有
--header后面的键值对统一用双引号包裹,确保shell识别为完整的header参数 - 直接复用你已经定义好的Shell变量,避免手动输入写错App包名、设备令牌、APNS地址等信息
- 确认命令中使用的设备令牌和你实际测试设备的令牌一致
修复后的完整命令如下:
curl -v \ --header "apns-topic: $TOPIC" \ --header "apns-push-type: alert" \ --cert "$CERTIFICATE_FILE_NAME" \ --cert-type DER \ --key PushChatKey.pem \ --key-type PEM \ --data '{"aps":{"alert":"test"}}' \ --http2 "https://$APNS_HOST_NAME/3/device/$DEVICE_TOKEN"
如果你不想每次运行都手动输入PEM密钥的密码,可以将--key PushChatKey.pem修改为--key PushChatKey.pem:你的密钥密码即可。
内容的提问来源于stack exchange,提问作者programcode
相关产品推荐
相关产品推荐

