你需要
BeginGetRequestStream
方法,然后获取响应(注意vb.net不是我的主要语言)。
Public Sub SubmitMessage()
request = WebRequestCreator.ClientHttp.Create(New System.Uri("http://localhost:27856/Home.aspx/PostUpdate/"))
request.Method = "POST"
request.BeginGetRequestStream(New AsyncCallback(AddressOf SendData), Nothing)
End Sub
Public Sub SendData(ByVal ar As IAsyncResult)
Dim stream as Stream = state.Request.EndGetRequestStream(ar)
'' # Pump your data as bytes into the stream.
stream.Close()
request.BeingGetResponse(New AsyncCallback(AddressOf UpdateDone), Nothing)
End Sub
Public Sub UpdateDone(ByVal ar As IAsyncResult)
Dim response As HttpWebResponse = request.EndGetResponse(ar)
Using reader As StreamReader = New StreamReader(response.GetResponseStream())
Dim valid As String = reader.ReadToEnd()
End Using
End Sub
从您的回答来看,似乎正在发布HTML表单数据。以下是创建实体主体的正确方法(C抱歉):-
public static string GetUrlEncodedData(Dictionary<string, string> data)
{
var sb = new StringBuilder();
foreach (var kvp in data)
{
if (sb.Length > 0) sb.Append("&");
sb.Append(kvp.Key);
sb.Append("=");
sb.Append(Uri.EscapeDataString(kvp.Value));
}
return sb.ToString();
}
特别注意
Uri.EscapeDataString
,这是对此内容类型的数据值进行编码的正确方法。它假定服务器需要UTF-8字符编码。
当将结果转换为准备发布的字节数组时,您只需要使用ASCII编码,因为返回的字符串将只包含ASCII范围内的字符。