xml
文字列をRook
Web サーバーに送信したいと考えています。しかし、クラスのPOST
メソッドを使用してリクエストのペイロードを解析すると、返されたリストの名前にコンテンツが挿入されます。対応するリスト値は. パッケージのオプションを使用してリクエストを作成します。より詳細な例を以下に示します。Rook::Request
POST
NA
postForm
postfields
RCurl
これをファイルに入れますwebserver.R
library(Rook)
s <- Rhttpd$new()
#set up web server app
s$add(
name="xml_example",
app=function(env) {
req <- Request$new(env)
#parse POST request
tmp=req$POST()
#create response
res <- Rook::Response$new()
#use dput and capture.output to return text of tmp
res$write(capture.output(dput(tmp)))
res$finish()
}
)
#start web server on port 9000
s$start(port=9000)
#we will start the web server via Rscript and NOT via RStudio
Sys.sleep(.Machine$integer.max)
以下は RStudio 経由で実行できます (Windows ユーザーはコマンドの一部を変更する必要がある場合があります)。
library(RCurl)
#start web server outside of RStudio! Do not forget to kill it later
system("Rscript webserver.R &")
#send POST request
postForm("http://127.0.0.1:9000/custom/xml_example",
.opts=list(postfields="<request>test</request>",
httpheader=c("content-type"="application/xml")))
これは戻ります
#[1] "structure(list(`<request>test</request>` = NA),
# .Names = \"<request>test</request>\")"
ご覧のとおり、xml
文字列はリスト名に入れられます。正確には私が期待していたものではありません。を取得するためにリスト名を抽出する以外に、xml
これを適切に行うにはどうすればよいですか? またはでオプションを設定する必要がありますRook
かRCurl
?
ところで:
#do not forget to kill the webserver
system("ps aux|grep webserver.R")
#system("kill yourPIDhere")