c# 向php url发送数据

Posted

技术标签:

【中文标题】c# 向php url发送数据【英文标题】:c# sending data to php url 【发布时间】:2013-10-11 23:16:07 【问题描述】:

好的,我已经创建了一个 c# 控制台源代码,但它不能按我的意愿工作。

我需要将数据发布到一个 URL,就像我要在浏览器中输入一样。

url with data = localhost/test.php?DGURL=DGURL&DGUSER=DGUSER&DGPASS=DGPASS

这是我的 c# 脚本,它没有按照我想要的方式执行它我希望它发布数据,就像我像上面那样输入它一样。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using System.Collections.Specialized;
using System.Net;
using System.IO;


namespace ConsoleApplication1

  class Program
  
     static void Main(string[] args)
     
        string URL = "http://localhost/test.php";
        WebClient webClient = new WebClient();

        NameValueCollection formData = new NameValueCollection();
        formData["DGURL"] = "DGURL";
        formData["DGUSER"] = "DGUSER";
        formData["DGPASS"] = "DGPASS";

        byte[] responseBytes = webClient.UploadValues(URL, "POST", formData);
        string responsefromserver = Encoding.UTF8.GetString(responseBytes);
        Console.WriteLine(responsefromserver);
        webClient.Dispose();
    
  

我还在 c# 中尝试了另一种方法,现在也可以使用

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using System.Collections.Specialized;
using System.Net;
using System.IO;


namespace ConsoleApplication1

    class Program
    
        static void Main(string[] args)
        
            string URI = "http://localhost/test.php";
            string myParameters = "DGURL=value1&DGUSER=value2&DGPASS=value3";

            using (WebClient wc = new WebClient())
            
                wc.Headers[HttpRequestHeader.ContentType] = "text/html";
                string HtmlResult = wc.UploadString(URI, myParameters);
                System.Threading.Thread.Sleep(500000000);
            
        
    

几天来,我一直在尝试在我的 c# 控制台中找到一种方法来做到这一点

【问题讨论】:

有什么问题?会发生什么? 我有一个 php 脚本等待 url 发布,然后如果我手动访问数据添加的 url,则将数据添加到 mysql,但运行此代码时它不会添加 我误打了帽子,这里没有大喊大叫 我们喜欢大喊大叫。但说真的,您在顶部的示例 url 使用查询字符串,然后您将值作为 post 参数传递,您想要哪种方式? 首先,您使用的是 post 方法,其中 url 内部是一个 get 方法,只需将其切换为 get。 【参考方案1】:

如何在 C# 中使用 WebClient 将数据发布到 URL:https://***.com/a/5401597/2832321

另请注意,如果您发布参数,您的参数将不会出现在 URL 中。见:https://***.com/a/3477374/2832321

【讨论】:

好的,我去看看,我知道,但是由于 MySQL 没有更新,所以没有收到数据 试过上面那个什么都不做的例子,控制台什么也不做,我也没有收到数据【参考方案2】:

由于您似乎想要的是带有查询字符串而不是 POST 的 GET 请求,因此您应该这样做。

static void Main(string[] args)

    var dgurl = "DGURL", user="DGUSER", pass="DGPASS";
    var url = string.Format("http://localhost/test.php?DGURL=0&DGUSER=1&DGPASS=DGPASS", dgurl, user, pass);
    using(var webClient = new WebClient()) 
    
        var response = webClient.DownloadString(url);
        Console.WriteLine(response);
    

我还将您的WebClient 包装在using 语句中,因此即使下载字符串时会引发异常,您也不必担心自己处理它。

要考虑的另一件事是,您可能希望使用 WebUtility.UrlEncode 对查询字符串中的参数进行 url 编码,以确保它不包含无效字符。

【讨论】:

以上是关于c# 向php url发送数据的主要内容,如果未能解决你的问题,请参考以下文章

PHP cURL无法向api发送POST请求

c#使用多线程发送HTTP请求的问题,高手进!~~~

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

C#中怎么向串口发送数据

C# 后台向一个url 发送请求

如何用php向服务器发送post请求