我尝试使用带有POST的WebRequest发送数据但我的问题是没有数据流传输到服务器。

string user = textBox1.Text;
string password = textBox2.Text;  

ASCIIEncoding encoding = new ASCIIEncoding();
string postData = "username" + user + "&password" + password;
byte[] data = encoding.GetBytes(postData);

WebRequest request = WebRequest.Create("http://localhost/s/test3.php");
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = data.Length;

Stream stream = request.GetRequestStream();
stream.Write(data, 0, data.Length);
stream.Close();

WebResponse response = request.GetResponse();
stream = response.GetResponseStream();

StreamReader sr99 = new StreamReader(stream);
MessageBox.Show(sr99.ReadToEnd());

sr99.Close();
stream.Close();

这里的结果

===============>>#1 票数:7 已采纳

这是因为您需要使用=等号分配已发布的参数:

byte[] data = Encoding.ASCII.GetBytes(
    $"username={user}&password={password}");

WebRequest request = WebRequest.Create("http://localhost/s/test3.php");
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = data.Length;
using (Stream stream = request.GetRequestStream())
{
    stream.Write(data, 0, data.Length);
}

string responseContent = null;

using (WebResponse response = request.GetResponse())
{
    using (Stream stream = response.GetResponseStream())
    {
        using (StreamReader sr99 = new StreamReader(stream))
        {
            responseContent = sr99.ReadToEnd();
        }
    }
}

MessageBox.Show(responseContent);

请参阅发布数据格式中的username=&password=

你可以在这个小提琴上测试它。

编辑:

您的PHP脚本似乎具有与您的问题中使用的参数名称不同的参数。

  ask by abdallah translate from so

未解决问题?本站智能推荐:

15回复

如何发出HTTP POST Web请求

典范如何使用POST方法发出HTTP请求并发送一些数据? 我可以执行GET请求,但是不知道如何发出POST请求。
2回复

尝试发布时出现“ HTTP ::消息内容必须为字节”错误

我有以下代码: 当我尝试使用setImage函数时,它失败并出现错误HTTP::Message content must be bytes at /usr/lib64/perl5/vendor_perl/5.8.8/HTTP/Request/Common.pm line 91 。 更糟
3回复

在ASP.NET中接收POST数据

我想在C#桌面应用程序中使用ASP来生成代码。 为此,我设置了一个简单的主机(派生自System.MarshalByRefObject),它通过HttpRuntime.ProcessRequest处理System.Web.Hosting.SimpleWorkerRequest。 这将处理
1回复

从C#向URL发送POST请求[重复]

这个问题已经在这里有了答案: 如何使HTTP POST Web请求 10个答案 我有一个由Azure托管的Node服务器,可以在其中向API发送POST请求以使其执行某些功能。 该API本身有效,我已经用Post Man对其进行了测试。 对该API的调用看起
1回复

使用CredentialCache发出HTTP请求并通过AD进行身份验证

我正在发出http请求,需要使用AD凭据进行身份验证。 我能够成功做到: 但是,我正在尝试通过使用 但是,这将返回401。CredentialCache是​​否不是执行此操作的正确方法? 这是拉当前用户名和密码以这种方式通过的一种方法,还是我需要提示用户输入此信息?
2回复

在C#api控制器中获取请求源

当我用ajax调用调用一些api端点时,有什么方法可以在api控制器中获取请求原点值? 例如,我正在从www.xyz.com拨打这个电话: 一旦进入api方面,我怎样才能获得www.xyz.com的价值? CORS正常运行。
2回复

使用C#发送POST数据

这是我试图用来将POST数据发送到URL并带回其响应的方法: 我从MSDN网页上获得了很多这样的代码,所以我知道我大致走在正确的轨道上...但是当我使用以下方法调用该方法时: 应用程序刚刚锁定。 我调试了该方法,据我所知,代码运行良好,直到这一行: 我试过在try块中把
2回复

在C#中使用WebClient.DownloadString发送POST

我知道有很多关于使用C#发送HTTP POST请求的问题,但我正在寻找一种使用WebClient而不是HttpWebRequest 。 这可能吗? 这很好,因为WebClient类很容易使用。 我知道我可以设置Headers属性以设置某些标头,但我不知道是否可以从WebClient实际
2回复

从其http请求获取有关用户的信息

问: 我想询问如何获取计算机名称和向我的网站发出http request的用户的帐户名称 。根据他的请求。 当我搜索我发现: REMOTE_HOST 发出请求的主机的名称。 如果服务器没有此信息,它将设置REMOTE_ADDR并将其保留为空。 为什么服务器可能永远
2回复

C#POST请求-发送更多标头会使它变慢吗?

因此,如果我使用C#HttpWebRequest类发出POST请求,并且添加了头文件堆,那么执行起来会需要更长的时间吗? 我的意思是,如果您考虑一下,是否会发送更多的数据,从而花费更长的时间? 例如: 是否只需要添加一个或两个标题即可?