Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在winform应用程序中将vb函数转换为c#_C#_.net_Vb.net_Winforms - Fatal编程技术网

在winform应用程序中将vb函数转换为c#

在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

我试图将以前编写的.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, 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 "";
}