Delphiを用いて、ChatWorkへのメッセージ投稿をしようと考えています。
コンポーネントとしてIndyのIdHTTPを使用しようと思っています。
Delphi
1 2unit Unit1; 3 4interface 5 6uses 7 Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, 8 Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, IdBaseComponent, 9 IdComponent, IdTCPConnection, IdTCPClient, IdHTTP; 10 11type 12 TForm4 = class(TForm) 13 IdHTTP1: TIdHTTP; 14 Button1: TButton; 15 procedure Button1Click(Sender: TObject); 16 private 17 { Private 宣言 } 18 public 19 { Public 宣言 } 20 end; 21 22var 23 Form4: TForm4; 24 25implementation 26 27{$R *.dfm} 28 29procedure TForm4.Button1Click(Sender: TObject); 30var 31 PostURL: string; 32 PostStream: TStringList; 33 ResStream: TStringStream; 34 PostData: string; 35 Encoding: TEncoding; 36 BytesLength: Integer; 37 38 poststring:TStringList; 39 strm:TStringStream; 40 st:string; 41 42 test: TStringList; 43 44begin 45 PostURL := 'https://api.chatwork.com/v2/rooms/XXXXXXXX/messages'; 46 PostStream := TStringList.Create; 47 ResStream := TStringStream.Create(''); 48 49 //自動でエンコードしないようにする 50 IdHTTP1.HTTPOptions := IdHTTP1.HTTPOptions - [hoForceEncodeParams]; 51 52 //名前 53 PostStream.Add('body=TEST'); 54 Screen.Cursor := crHourGlass; 55 56 Encoding := TEncoding.GetEncoding(932); 57 BytesLength := Encoding.GetByteCount(PostStream[0]); 58 test := TStringList.Create; 59 test.Add('X-ChatWorkToken:XXXXXXXXXXXX'); 60 61 Encoding.Free; 62 try 63 try 64 IdHTTP1.Request.Method := 'POST'; 65 IdHTTP1.Request.ContentType := 'application/x-www-form-urlencoded'; 66 IdHTTP1.Request.ContentLength := BytesLength; 67 IdHTTP1.Request.CustomHeaders.AddStdValues(test); 68 IdHTTP1.Post(PostURL, PostStream, ResStream); 69 except 70 //エラー内容はIdHTTP1.ResponseTextで受取る 71 end; 72 finally 73 ShowMessage(IdHTTP1.ResponseText); 74 //サーバからのデータを表示 75 ShowMessage(ResStream.DataString); 76 77 Screen.Cursor := crDefault; 78 FreeAndNil(PostStream); 79 FreeAndNil(ResStream); 80 end; 81 82end; 83 84end.
VCLフォーム上にTButtonとIdHTTPを配置してクリックイベントが行われたら特定のルームにTESTというメッセージを通知しようと思っていますが401エラーが発生します。
パラメータが足りていない、またはポストのやり方が違うなどを考えていますがその場合どのように直せば良いのかで悩んでいます。DelphiでのChatWork通知のやり方が無かったので手探りの状態です。
ご助言のほどよろしくお願いします。
※ChatworkAPIは発行済みで、Delphiとは異なる言語でのPOSTは確認しています。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/03/27 02:41