0

古いClassicASPサイトのロジックをasp.netプロジェクトに変換する必要があります。データの投稿を担当する関数の理解に問題があります。

クラシックASPの関数は次のとおりです。

<%Function PostHTTP(strURL, strBody, strErrTemplate)
ON ERROR RESUME NEXT
Dim objHTTP, strResult

  Set objHTTP = Server.CreateObject("Msxml2.ServerXMLHTTP.3.0")

  If Err.Number <> 0 Then
    strResult = Replace(strErrTemplate, "%1", Err.Number)
    strResult = Replace(strResult, "%2", Err.Description)
    strResult = Replace(strResult, "%3", "Init::" & Err.Source)
    Set objHTTP = Nothing
    PostHTTP = strstrResult
    Exit Function
  End If

  With objHTTP
    .Open "POST", strURL, False
    .setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
    .setTimeouts 30000, 30000, 60000, 240000
    .send strBody

    If Err.Number <> 0 Then
      strResult = Replace(strErrTemplate, "%1", Err.Number)
      strResult = Replace(strResult, "%2", Err.Description)
      strResult = Replace(strResult, "%3", "Post::" & Err.Source)
    Else
      strResult = .responseText
    End If
  End With

' Response.Write "strResult: " & strResult
'Response.End


  If Err.Number > 0 Then
    strResult = Replace(strErrTemplate, "%1", Err.Number)
    strResult = Replace(strResult, "%2", Err.Description)
    strResult = Replace(strResult, "%3", Err.Source)
  ElseIf Len(strResult) = 0 Then
    strResult = Replace(strErrTemplate, "%1", 2000)
    strResult = Replace(strResult, "%2", "No response received from remote server.")
    strResult = Replace(strResult, "%3", "PostHTTP")
  End If

  PostHTTP = strResult
  Set objHTTP = Nothing
End Function

これはasp.netではどのように見えますか?

ps:私は自分の投稿機能を試しましたが、私のものが機能しないため、明らかに何かを逃しました。

4

1 に答える 1

1

WebClientクラスを使用する場合、POSTの主なタスクは非常に簡単です。例えば、

// Form URL and POST-DATA
...
using (WebClient wc = new WebClient())
{
    wc.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded";
    string strResult = wc.UploadString(strURL, strBody);
}
...

よりきめ細かい制御には、WebRequestクラスを使用できます。

編集WebRequest:これは、では不可能なタイムアウト値を指定する必要があるように見えるため、のサンプルコードです。WebClient

var request = WebRequest.Create(strUrl);
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.Timeout = 240000; // set timeout
using (var writer = new StreamWriter(request.GetRequestStream()))
{
    // write to the body of the POST request
    writer.Write(strBody);
}
于 2013-01-04T06:26:03.080 に答える