在winform应用程序中将vb函数转换为c#
我试图将以前编写的.net winform应用程序从vb转换为c#,但web发送功能遇到了问题。如何将其转换为c# HTTP对象就是我在翻译成c#时遇到的问题。我不知道我是否需要使用http客户机,http web请求,我对web调用相当陌生 编辑我已将代码缩短到我不确定的地方,删除了绒毛 试试这个:在winform应用程序中将vb函数转换为c#,c#,.net,vb.net,winforms,C#,.net,Vb.net,Winforms,我试图将以前编写的.net winform应用程序从vb转换为c#,但web发送功能遇到了问题。如何将其转换为c# HTTP对象就是我在翻译成c#时遇到的问题。我不知道我是否需要使用http客户机,http web请求,我对web调用相当陌生 编辑我已将代码缩短到我不确定的地方,删除了绒毛 试试这个: public static string Send(string p_ipAddress, string p_action, string p_page, string p_body, strin
public static string Send(string p_ipAddress, string p_action, string p_page, string p_body, string p_filePath)
{
dynamic objHttp = Microsoft.VisualBasic.Interaction.CreateObject("MSXML2.ServerXMLHTTP");
// objHttp.setTimeouts(1000, 1000, 1000, 1000) '-- Timeout
objHttp.Open(p_action, sUrl, false);
if (t_fileContent.Length > 0)
objHttp.setRequestHeader("Content-Type", "multipart/form-data; boundary=" + t_multipart_boundary);
else
{
t_fileContent.Append(p_body);
objHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
}
objHttp.Send(t_fileContent.ToString());
if (objHttp.Status == 200)
return objHttp.responseText;
return "";
}
您必须添加对Microsoft.VisualBasic.dll的引用
但是有一些合适的.NET类可以处理通过HTTP发送的数据。最好使用这些重写。您不必使用Microsoft.VisualBasic.dll-有一种“core.NET”方法可以做到这一点:
public static string Send(string p_ipAddress, string p_action, string p_page, string p_body, string p_filePath)
{
dynamic objHttp = System.Activator.CreateInstance(System.Type.GetTypeFromProgID("MSXML2.ServerXMLHTTP"));
objHttp.Open(p_action, sUrl, false);
if (t_fileContent.Length > 0)
objHttp.setRequestHeader("Content-Type", "multipart/form-data; boundary=" + t_multipart_boundary);
else
{
t_fileContent.Append(p_body);
objHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
}
objHttp.Send(t_fileContent.ToString());
if (objHttp.Status == 200)
return objHttp.responseText;
return "";
}
相关的:我会考虑把它放在VB中,但是把代码移到一个可以从C++中引用的库项目。<代码> var ObjHTP=微软。VisualBasic。Actudio。CreateObject(“MSXML2.ServxMLHTTP”);代码>您所需要的一切?
Microsoft.VisualBasic.dll
但是有适当的.NET类处理通过HTTP发送的问题。最好使用这些方法重写。问题是objHttp没有用于“打开”、“设置请求头”、“发送”、“状态”或“响应文本”的方法。请参见我的编辑中的屏幕截图。@DrewJackson-尝试动态。作为记录,我更愿意使用适当的c#.net类重写,我只是不熟悉它。
public static string Send(string p_ipAddress, string p_action, string p_page, string p_body, string p_filePath)
{
dynamic objHttp = System.Activator.CreateInstance(System.Type.GetTypeFromProgID("MSXML2.ServerXMLHTTP"));
objHttp.Open(p_action, sUrl, false);
if (t_fileContent.Length > 0)
objHttp.setRequestHeader("Content-Type", "multipart/form-data; boundary=" + t_multipart_boundary);
else
{
t_fileContent.Append(p_body);
objHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
}
objHttp.Send(t_fileContent.ToString());
if (objHttp.Status == 200)
return objHttp.responseText;
return "";
}