Python、GAS、ASP、C++、C# 、PHP、R、Node.js版本將陸續分享於此。
Python 2.7
import requests
def SendMessageToLineNotify(message, picurl):
Token = "你的Token"
url = "https://notify-api.line.me/api/notify"
payload = {'message':message,
'imageThumbnail':picurl,
'imageFullsize':picurl,
'stickerPackageId':1,
'stickerId':106
}
header = {'Content-Type':'application/x-www-form-urlencoded',
'Authorization':'Bearer ' + Token
}
resp=requests.post(url, headers=header, data=payload)
print resp.text
def main():
message = '中文測試~!@#$%^&*()123456789'
picurl = 'http://www.ccf.org.tw/new/endpoverty/images/product/product-pic1.jpg'
SendMessageToLineNotify(message, picurl)
if __name__ == '__main__':
main()
Google Apps Scriptfunction SendMessageToLineNotify()
{
var message = "中文測試~!@#$%^&*()123456789";
var pictureURL= "http://www.ccf.org.tw/new/endpoverty/images/product/product-pic1.jpg";
sendMessage(message, pictureURL);
}
function sendMessage(message, pictureURL){
var Token = "你的Token";
var URL = "https://notify-api.line.me/api/notify";
var payload =
{
'message' : message,
'imageThumbnail': pictureURL,
'imageFullsize': pictureURL
};
var header =
{
'Content-Type':'application/x-www-form-urlencoded',
'Authorization' : 'Bearer ' + Token
}
var options =
{
'method' : 'post',
'payload' : payload,
'headers' : header
};
var response = UrlFetchApp.fetch(URL, options);
Logger.log(response);
}
感謝 ~ M 大大 提供以下ASP程式碼<%
Response.ContentType = "text/html"
Response.AddHeader "Content-Type", "text/html;charset=UTF-8"
Response.CodePage = 65001
Response.CharSet = "UTF-8"
'指定的LineNotify Token
strToken = "你的Token"
'Line Notify的傳送訊息網址
URL = "https://notify-api.line.me/api/notify"
'中文字串要轉成UTF8
strMessageUTF8Encode = Server.URLEncode(vbcrlf & "傳網頁圖檔測試 家扶娃娃撲滿 ~!@#$%^*()1234567890ABCabc")
'網路圖片連結 家扶娃娃撲滿
strPicURL = "http://www.ccf.org.tw/new/endpoverty/images/product/product-pic1.jpg"
'傳送參數內容
strMessage = "message=" & strMessageUTF8Encode
strImageThumbnail = "imageThumbnail=" & strPicURL
strImageFullsize = "imageFullsize=" & strPicURL
strStickerPackageId = "stickerPackageId=" & "1"
strStickerId = "stickerId=" & "106"
strAllMessage = strMessage & "&" & strImageThumbnail & "&" & strImageFullsize & "&" & strStickerPackageId & "&" & strStickerId
'建立Ajax物件
Set oXML = server.CreateObject("Microsoft.XMLHTTP")
With oXML
'使用同步傳輸
.Open "POST", URL, 0
'設定傳送封包Header
.SetRequestHeader "Content-Type", "application/x-www-form-urlencoded"
.SetRequestHeader "Authorization", "Bearer " & strToken
'執行Ajax傳送
.send (strAllMessage)
response.write oXML.responseText
End With
'釋放物件資源
Set oXML = Nothing
%>
VC++#import "msxml4.dll"
using namespace MSXML2;
inline void THROW_IF_FAIL( HRESULT _hr ) { if FAILED(_hr) throw(_hr); }
void SendMessageToLineNotify()
{
CString csMessage;
OutputDebugString("測試XMLHTTP傳文字與網路圖片!\n");
try
{
//初始化Com元件
THROW_IF_FAIL(CoInitialize(NULL));
IXMLHTTPRequestPtr xmlrequest=NULL;
VARIANT vAsync;
vAsync.vt = VT_BOOL;
vAsync.boolVal = FALSE;
VARIANT vUser;
vUser.vt = VT_BOOL;
vUser.bstrVal = NULL;
VARIANT vPassword;
vPassword.vt = VT_BOOL;
vPassword.bstrVal = NULL;
//LineNotify網址
bstr_t sUrl = "https://notify-api.line.me/api/notify";
//指定的LineNotify Token
bstr_t Token = "你的Token";
//網路圖片連結 家扶娃娃撲滿
CString PicURL = "http://www.ccf.org.tw/new/endpoverty/images/product/product-pic1.jpg";
//文字訊息
CString csPostData;
csPostData = "message=傳網頁圖檔測試 家扶娃娃撲滿 ~!@#$%^&*()1234567890ABCabc";
//網路圖片
csPostData = csPostData + "&imageThumbnail=" + PicURL;
csPostData = csPostData + "&imageFullsize=" + PicURL;
//內建貼圖號碼
csPostData = csPostData + "&stickerPackageId=" + "1";
csPostData = csPostData + "&stickerId=" + "106";
//
// 建立 MSXML2.XMLHTTP 物件.
//
THROW_IF_FAIL(xmlrequest.CreateInstance("MSXML2.XMLHTTP"));
//
// 傳送 HTTPPOSTrequest.
//
bstr_t sMethod = "POST";
THROW_IF_FAIL(xmlrequest->open(sMethod,
sUrl,
vAsync,
vUser,
vPassword));
//Header內容設定
THROW_IF_FAIL(xmlrequest->setRequestHeader("Content-Type:", "application/x-www-form-urlencoded"));
THROW_IF_FAIL(xmlrequest->setRequestHeader("Authorization", "Bearer " + Token));
//
// 傳送 request 到 server.
//
THROW_IF_FAIL(xmlrequest->send(_variant_t(csPostData)));
//
// 取得執行狀態
//
long lStatus;
xmlrequest->get_status(&lStatus);
if(lStatus == 200)
{
BSTR bstrResponseText;
xmlrequest->get_responseText(&bstrResponseText);
_bstr_t bstrtbody(bstrResponseText);
csMessage.Format("responseText = %s\n", (char*)(bstr_t)bstrtbody);
MessageBox(NULL, csMessage, "執行成功", MB_ICONASTERISK);
}
else
{
BSTR bstrResp;
xmlrequest->get_statusText(&bstrResp);
csMessage.Format("statusText = %s\n", (char*)(bstr_t)bstrResp);
MessageBox(NULL, csMessage, "執行失敗", MB_ICONERROR);
}
}
catch (_com_error &e)
{
if(BSTR(e.Description()))
{
csMessage.Format("Description = %s", BSTR(e.Description()));
OutputDebugString(csMessage);
}
}
catch(...)
{
TRACE("*** UNABLE TO LOG EXCEPTION ***");
}
CoUninitialize();
OutputDebugString("執行結束\n");
}
C#using System;
using System.IO;
using System.Net;
using System.Text;
namespace POSTXML
{
class Program
{
static void Main(string[] args)
{
// Create a request using a URL that can receive a post.
WebRequest request = WebRequest.Create("https://notify-api.line.me/api/notify");
// Set the Method property of the request to POST.
request.Method = "POST";
// Create POST data and convert it to a byte array.
string Token = "你的Token";
string message = "message=" + "傳網頁圖檔測試 家扶娃娃撲滿 ~!@#$%^*()1234567890ABCabc";
string picURL = "http://www.ccf.org.tw/new/endpoverty/images/product/product-pic1.jpg";
string imageThumbnail = "&imageThumbnail=" + picURL;
string imageFullsize = "&imageFullsize=" + picURL;
string stickerPackageId = "&stickerPackageId=" + "1";
string stickerId = "&stickerId=" + "106";
string postData = message + imageThumbnail + imageFullsize + stickerPackageId + stickerId;
byte[] byteArray = Encoding.UTF8.GetBytes(postData);
// Set the ContentType property of the WebRequest.
request.ContentType = "application/x-www-form-urlencoded";
// Set the Header property of the WebRequest.
request.Headers["Authorization"] = "Bearer " + Token;
// Set the ContentLength property of the WebRequest.
request.ContentLength = byteArray.Length;
// Get the request stream.
Stream dataStream = request.GetRequestStream();
// Write the data to the request stream.
dataStream.Write(byteArray, 0, byteArray.Length);
// Close the Stream object.
dataStream.Close();
// Get the response.
WebResponse response = request.GetResponse();
// Display the status.
Console.WriteLine(((HttpWebResponse)response).StatusDescription);
// Get the stream containing content returned by the server.
dataStream = response.GetResponseStream();
// Open the stream using a StreamReader for easy access.
StreamReader reader = new StreamReader(dataStream);
// Read the content.
string responseFromServer = reader.ReadToEnd();
// Display the content.
Console.WriteLine(responseFromServer);
// Clean up the streams.
reader.Close();
dataStream.Close();
response.Close();
}
}
}
感謝Yi Tung 大大提供的 PHP<?php
$initData['message'] = '傳網頁圖檔測試 家扶娃娃撲滿 ~!@#$%^*()1234567890ABCabc';
$initData['imageThumbnail'] = 'http://www.ccf.org.tw/new/endpoverty/images/product/product-pic1.jpg';
$initData['imageFullsize'] = 'http://www.ccf.org.tw/new/endpoverty/images/product/product-pic1.jpg';
$initData['stickerPackageId'] = '1';
$initData['stickerId'] = '106';
$token = '你的Token';
echo '<pre>';
print_r(sendLineNotify($initData, $token));
echo '</pre>';
function sendLineNotify($initData, $token,$url = 'https://notify-api.line.me/api/notify') {
$ch = curl_init();
$header[] = 'Authorization: Bearer';
$header[] = $token;
curl_setopt_array($ch, array(
CURLOPT_URL => $url,
CURLOPT_POST => TRUE,
CURLOPT_RETURNTRANSFER => TRUE,
CURLOPT_SSL_VERIFYHOST => 0,
CURLOPT_SSL_VERIFYPEER => 0,
CURLOPT_HTTPHEADER => array(implode(' ',$header)),
CURLOPT_POSTFIELDS => http_build_query($initData),
));
$result = curl_exec($ch);
curl_close($ch);
$aResult = json_decode ($result, TRUE);
return $aResult;
}
?>
感謝 ~ M 大大 提供以下R程式碼
library(httr)
picurl <- "http://www.ccf.org.tw/new/endpoverty/images/product/product-pic1.jpg"
url <- "https://notify-api.line.me/api/notify"
message <- "中文測試~@#$%^&*()123456789"
token <- "Bearer 你的Token"
postdata <- list("message"=message,
"imageThumbnail"=picurl,
"imageFullsize"=picurl,
"stickerPackageId"="1",
"StickerId"="106")
header <- add_headers("Authorization"=token)
req <- POST(url, header, body = postdata, encode="form")
status <- content(req , as ="text", encoding="utf-8")
status
感謝 Cass (C.K.) 大大 協助Node.js環境建置,來完成以下程式碼
var Token = "你的Token";
var LineNotifyURL = "https://notify-api.line.me/api/notify";
var PictureURL = "http://www.ccf.org.tw/new/endpoverty/images/product/product-pic1.jpg";
var strMessage = "message=" + "傳網頁圖檔測試 家扶娃娃撲滿 ~!@#$%^*()1234567890ABCabc";
var strStickerPackageId ="stickerPackageId=" + "1";
var strStickerId ="stickerId=" + "106";
var strImageThumbnail = "imageThumbnail=" + PictureURL;
var strImageFullsize = "imageFullsize=" + PictureURL;
var strAllMessage = strMessage + "&" + strImageThumbnail + "&" + strImageFullsize + "&" + strStickerPackageId + "&" + strStickerId;
var XMLHttpRequest = require("xmlhttprequest").XMLHttpRequest;
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function () {
if (xhttp.readyState === 4) {
console.log(xhttp.responseText);
console.log(xhttp.status);
}
};
xhttp.open('POST', LineNotifyURL, true);
xhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded;charset=UTF-8');
xhttp.setRequestHeader('Authorization', 'Bearer ' + Token);
xhttp.send(strAllMessage);
可參考 Node.js 環境建置,執行xmlhttprequest。執行結果:
參考資料:
