ASPアナログPOST要求非同期コミットデータの方法

1535 ワード

リモートサイトのいくつかの情報を取得する必要がある場合がありますが、サーバはGET方式を制限しており、POSTデータの提出しかできません.この場合、aspを通じてpostデータの提出をシミュレートすることができます.ネット上にはこのような例がたくさんあります.以下は私自身が書いた比較的簡潔で分かりやすい関数です.
まず、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")