ASPアナログPOST要求非同期コミットデータの方法
1535 ワード
リモートサイトのいくつかの情報を取得する必要がある場合がありますが、サーバはGET方式を制限しており、POSTデータの提出しかできません.この場合、aspを通じてpostデータの提出をシミュレートすることができます.ネット上にはこのような例がたくさんあります.以下は私自身が書いた比較的簡潔で分かりやすい関数です.
まず、aspは一般的にgbkであり、標準的なウェブサイトではutf-8が使用されているため、符号化設定の関数が必要です.だから変換が必要です.
次にpostデータの提出をコンポーネントで実現し,ここではMSXML 2を用いた.SERVERXMLHTTP.3.0.もちろん他のものも使えます.
使用する場合は、次のようになります.
まず、aspは一般的にgbkであり、標準的なウェブサイトではutf-8が使用されているため、符号化設定の関数が必要です.だから変換が必要です.
function BytesToBstr(body,Cset)
dim objstream
set objstream = Server.CreateObject("adodb.stream")
objstream.Type = 1
objstream.Mode =3
objstream.Open
objstream.Write body
objstream.Position = 0
objstream.Type = 2
objstream.Charset = Cset
BytesToBstr = objstream.ReadText
objstream.Close
set objstream = nothing
End function
次にpostデータの提出をコンポーネントで実現し,ここではMSXML 2を用いた.SERVERXMLHTTP.3.0.もちろん他のものも使えます.
function PostHTTPPage(url,data)
dim Http
set Http=server.createobject("MSXML2.SERVERXMLHTTP.3.0")
Http.open "POST",url,false
Http.setRequestHeader "CONTENT-TYPE", "application/x-www-form-urlencoded"
Http.send(data)
if Http.readystate<>4 then
exit function
End if
PostHTTPPage=bytesToBSTR(Http.responseBody,"utf-8")
set http=nothing
if err.number<>0 then err.Clear
End function
使用する場合は、次のようになります.
PostHTTPPage("www.jb51.net","str1=a&str2=b&str3=c")