2013年1月19日土曜日

[Emacs][Elisp]HTTP 通信

scratch バッファで Elisp による HTTP 通信をしてみた
各命令の最後で Ctrl + j により実行
; TCP コネクション (localhost:80) をはる
; open-network-stream は返値に process 名を返してくるので、それを proc に格納する
(setq proc (open-network-stream "http-proc" "*test-http-buffer*" "localhost" 80))
#
; proc の状態を確認
(process-status proc)
open
; proc に対して送る coding を指定する
(set-process-coding-system proc 'binary 'binary)
nil
; proc に文字列を送る
(process-send-string
proc
(format(concat
"GET / HTTP/1.0\r\n"
"\r\n")))
nil
指定した *test-http-buffer* に結果が表示される
Process http-proc connection broken by remote peer
HTTP/1.1 200 OK
Date: Thu, 06 Aug 2009 13:59:44 GMT
Server: Apache/2.2.9 (Win32) DAV/2 mod_ssl/2.2.9 OpenSSL/0.9.8i mod_autoindex_color mod_python/3.3.1 Python/2.5.2 PHP/5.2.6
Last-Modified: Fri, 06 Mar 2009 23:42:57 GMT
ETag: "6000000000669-1bc-4647bd829e8db"
Accept-Ranges: bytes
Content-Length: 444
Connection: close
Content-Type: text/html
<html>
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=utf-8">
<title>Test page</title>
</head>
<body>
Hello, world
</body>
</html>
Process http-proc connection broken by remote peer

open-network-stream
open-network-stream NAME BUFFER-OR-NAME HOST SERVICE
TCP 接続を確立する
Table: open-network-stream の引数
引数内容
NAMEprocess 名を指定する
BUFFER-OR-NAMEこの TCP コネクションに割り付けられるバッファ名
HOST接続先ホスト
SERVICEネットワークサービス名 または ポート番号
process-status
process-status PROCESS-NAME
PROCESS-NAME で指定したプロセスの状態を返す
Table: process-status の引数
引数内容
PROCESS-NAMEプロセス名
Table: process-status の返値
返値意味
runプロセスは running 状態
stopプロセスは停止している、再開可能
exitプロセスは終了している
signalプロセスは fatal signal を受けた
openネットワークコネクションが open している
closedネットワークコネクションは close した
connectnon-blocking コネクション、完了待ち
failednon-blocking コネクション、失敗
listenネットワークサーバが listen 中
nil指定したプロセス名のプロセスは存在しない
set-process-coding-system
set-process-coding-system PROCESS &optional DECODING-SYSTEM ENCODING-SYSTEM
PROCESS で指定したプロセスとの output/input 用コーディングを指定する
Table: set-process-coding-system の引数
引数内容
PROCESSプロセス名
DECODING-SYSTEMプロセスからの output コーディング
ENCODING-SYSTEMプロセスへの input コーディング
process-send-string
process-send-string PROCESS STRING
プロセスに対して文字列を送る
Table: process-send-string の引数
引数内容
PROCESSプロセス名
STRING文字列

0 件のコメント:

コメントを投稿