HOWTO: XMLHTTPを使用して2バイト文字を含むFormデータを送信する


  JP418460




  

概要
この資料では、2 バイト文字 (DBCS) を含む FORM データを Application Server Page (ASP) に送信する方法
を XMLHTTP を使用して説明しています。




詳細
XMLHTTP オブジェクトまたは、ServerXMLHTTP オブジェクトを使用して DBCS を含む FORM データを送信する
場合、URL エンコードを行う必要があります。
ここでは、Visual Basic を使用した URL エンコードのサンプル コードと、それを使用してデータを ASP に送信する
例を示します。 URL エンコードに関しては RFC 1738 Uniform Resource Locators (URL) をご参照ください。 

Visual Basic を起動し、新規に標準 EXE プロジェクトを作成します。 


参照設定に "Microsoft XML, v3.0" または、それ以降のバージョンの XML を追加します。 


Form1 にボタンを 1 つ貼り付け、以下のコードを Form1 にコピーします。 
        Option Explicit
        Private Sub Command1_Click()
            Dim DataToSend As String
            Dim xh As New xmlhttp
            DataToSend = "山田 太郎"
            xh.open "POST", "http://localhost/Receiver.asp", False
            'Content-Type ヘッダーを必ず設定する必要があります。
            xh.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
            '送信するデータを URL エンコードします。
            DataToSend = "uid=" & URLEncode(DataToSend)
            Debug.Print "送信したデータ: " & DataToSend
            xh.send DataToSend
            'responseBody メソッドで受信した文字列を Visual Basic で扱う場合、
            'UNICODE へデコードする必要があります。
            Debug.Print "受信したデータ: " & StrConv(xh.responseBody, vbUnicode)
        End Sub
        Function URLEncode(src As String) As String
            Dim b() As Byte
            Dim ret As String
            Dim i As Integer
            ' Shift-JIS に変換します。
            b = StrConv(src, vbFromUnicode)
            For i = LBound(b) To UBound(b)
                If &H20 <= b(i) And b(i) <= &H7E Then '表示可能な ASCII 文字の場合
                    Select Case Chr(b(i))
                    Case "+", ";", "/", "?", ":", "@", "=", "&", "<", ">", """", "'", "#", "%"
                        ' URL 予約文字などは、16 進形式に変換します。
                        ret = ret & "%" & Hex(b(i))
                    Case " "
                        ' スペースは '+' に変換します。
                        ret = ret & "+"
                    Case Else
                        ' それ以外の ASCII 文字は、そのまま出力します。
                        ret = ret & Chr(b(i))
                    End Select
                Else
                    'コントロール文字か、DBCS の場合は、16 進形式に変換します。
                    If b(i) < &H20 Then
                        ret = ret & "%0" & Hex(b(i))
                    Else
                        ret = ret & "%" & Hex(b(i))
                    End If
                End If
            Next
            URLEncode = ret
        End Function
 


以下の内容の asp ファイルを Internet Information Service (IIS) の既定の Web サイトのルートに 
"Receiver.asp" というファイル名で保存します。 
        <%
        response.write("uid=" & Request("uid"))
        %>
 


作成した Visual Basic のプロジェクトを実行すると、イミディエイト ウィンドウに次の文字列が出力されます。 
        送信したデータ: uid=%8ER%93c+%91%BE%98Y
        受信したデータ: uid=山田 太郎
  










yahoo  google  MSDN  MSDN(us)  WinFAQ  Win Howto  tohoho  ie_DHTML  vector  wdic  辞書  天気 


[vb]
claudebot
24/04/19 04:41:53
InfoBoard Version 1.00 : Language=Perl

1 BatchHelper COMprog CommonSpec Cprog CprogBase CprogSAMPLE CprogSTD CprogSTD2 CprogWinsock Cygwin GameScript HTML HTMLcss InstallShield InstallShieldFunc JScript JScriptSAMPLE Jsfuncs LLINK OldProg OracleGold OracleSilver PRO PRObrowser PROc PROconePOINT PROcontrol PROftpclient PROjscript PROmailer PROperl PROperlCHAT PROphp PROphpLesson PROphpLesson2 PROphpLesson3 PROphpfunction PROphpfunctionArray PROphpfunctionMisc PROphpfunctionString PROsql PROvb PROvbFunction PROvbString PROvbdbmtn PROvbonepoint PROwebapp PROwin1POINT PROwinSYSTEM PROwinYOROZU PROwindows ProjectBoard RealPHP ScriptAPP ScriptMaster VBRealtime Vsfuncs a1root access accreq adsi ajax amazon argus asp aspSample aspVarious aspdotnet aw2kinst cappvariety centura ckeyword classStyle cmaterial cmbin cmdbapp cmenum cmlang cmlistbox cmstd cmstdseed cmtxt cs daz3d db dbCommon dbaccess dnettool dos download flex2 flex3 flex4 framemtn framereq freeWorld freesoft gimp ginpro giodownload google hdml home hta htmlDom ie9svg install java javaSwing javascript jetsql jquery jsp jspTest jspVarious lightbox listasp listmsapi listmsie listmsiis listmsnt listmspatch listmsscript listmsvb listmsvc memo ms msde mysql netbeans oraPlsql oracle oracleWiper oraclehelper orafunc other panoramio pear perl personal pgdojo pgdojo_cal pgdojo_holiday pgdojo_idx pgdojo_ref pgdojo_req php phpVarious phpguide plsql postgres ps r205 realC realwebapp regex rgaki ruby rule sboard sc scprint scquest sdb sdbquest seesaa setup sh_Imagick sh_canvas sh_dotnet sh_google sh_tool sh_web shadowbox shgm shjquery shvbs shweb sjscript skadai skywalker smalltech sperl sqlq src systemdoc tcpip tegaki three toolbox twitter typeface usb useXML vb vbdb vbsfunc vbsguide vbsrc vpc wcsignup webanymind webappgen webclass webparts webtool webwsh win8 winofsql wmi work wp youtube