Tôi có một kịch bản trình bao mà tôi đã sử dụng để đăng nội dung lên kênh hipchat. Nó hoạt động ok cho đến khi tôi thử và gửi một tin nhắn có các ký tự cần thoát. Tôi chạy lệnh như vậy (lưu ý các dấu chéo ngược thêm vào đó để gây ra một vấn đề)Làm cách nào để đăng chuỗi json có curl có các ký tự cần thoát?
/usr/local/bin/hipchatmsg.sh "my great message here \ " red
Và mã của tôi trong kịch bản bash của tôi (hipchatmsg.sh) mà vấn đề là thế này:
# Make sure message is passed
if [ -z ${1+x} ]; then
echo "Provide a message to create the new notification"
exit 1
else
MESSAGE=$1
fi
// send locally via curl
/usr/bin/curl -H "Content-Type: application/json" \
-X POST \
-k \
-d "{\"color\": \"$COLOR\", \"message_format\": \"text\", \"message\": \"$MESSAGE\" }" \
$SERVER/v2/room/$ROOM_ID/notification?auth_token=$AUTH_TOKEN &
// $server and $room are defined earlier
exit 0
Nếu tôi thử và chạy lệnh trên với bất kỳ ký tự mà không cần thoát ra, tôi sẽ nhận được một lỗi như thế này:
{
"error": {
"code": 400,
"message": "The request body cannot be parsed as valid JSON: Invalid \\X escape sequence u'\\\\': line 1 column 125 (char 124)",
"type": "Bad Request"
}
}
tôi tìm thấy một cái gì đó loại tương tự trên đây, nơi những lời khuyên tốt nhất là để thử gửi bài curl với - -da ta-urlencode, vì vậy tôi đã thử như sau:
Nhưng điều này không có hiệu lực.
tôi thiếu gì ở đây?
Mã hóa URL và mã hóa JSON là hai thứ khác nhau; 'curl' không biết về JSON. – chepner