代码之家  ›  专栏  ›  技术社区  ›  Delta76

如何在WebRequest中添加参数?

  •  39
  • Delta76  · 技术社区  · 14 年前

    我需要从Web服务调用一个方法,所以我编写了以下代码:

     private string urlPath = "http://xxx.xxx.xxx/manager/";
     string request = urlPath + "index.php/org/get_org_form";
     WebRequest webRequest = WebRequest.Create(request);
     webRequest.Method = "POST";
     webRequest.ContentType = "application/x-www-form-urlencoded";
     webRequest.
     webRequest.ContentLength = 0;
     WebResponse webResponse = webRequest.GetResponse();
    

    发布数据:

    _username:'API USER',         // api authentication username
    
    _password:'API PASSWORD',     // api authentication password
    

    如何将这些参数添加到此Webrequest中?

    5 回复  |  直到 7 年前
        1
  •  34
  •   Cœur tomoc4    7 年前

    如果这些是url字符串的参数,则需要通过“?”和“&添加它们例如chars http://example.com/index.aspx?username=Api_user&password=Api_password .

    如果这些是POST请求的参数,那么您需要创建POST数据并将其写入请求流。以下是示例方法:

    private static string doRequestWithBytesPostData(string requestUri, string method, byte[] postData,
                                            CookieContainer cookieContainer,
                                            string userAgent, string acceptHeaderString,
                                            string referer,
                                            string contentType, out string responseUri)
            {
                var result = "";
                if (!string.IsNullOrEmpty(requestUri))
                {
                    var request = WebRequest.Create(requestUri) as HttpWebRequest;
                    if (request != null)
                    {
                        request.KeepAlive = true;
                        var cachePolicy = new RequestCachePolicy(RequestCacheLevel.BypassCache);
                        request.CachePolicy = cachePolicy;
                        request.Expect = null;
                        if (!string.IsNullOrEmpty(method))
                            request.Method = method;
                        if (!string.IsNullOrEmpty(acceptHeaderString))
                            request.Accept = acceptHeaderString;
                        if (!string.IsNullOrEmpty(referer))
                            request.Referer = referer;
                        if (!string.IsNullOrEmpty(contentType))
                            request.ContentType = contentType;
                        if (!string.IsNullOrEmpty(userAgent))
                            request.UserAgent = userAgent;
                        if (cookieContainer != null)
                            request.CookieContainer = cookieContainer;
    
                        request.Timeout = Constants.RequestTimeOut;
    
                        if (request.Method == "POST")
                        {
                            if (postData != null)
                            {
                                request.ContentLength = postData.Length;
                                using (var dataStream = request.GetRequestStream())
                                {
                                    dataStream.Write(postData, 0, postData.Length);
                                }
                            }
                        }
    
                        using (var httpWebResponse = request.GetResponse() as HttpWebResponse)
                        {
                            if (httpWebResponse != null)
                            {
                                responseUri = httpWebResponse.ResponseUri.AbsoluteUri;
                                cookieContainer.Add(httpWebResponse.Cookies);
                                using (var streamReader = new StreamReader(httpWebResponse.GetResponseStream()))
                                {
                                    result = streamReader.ReadToEnd();
                                }
                                return result;
                            }
                        }
                    }
                }
                responseUri = null;
                return null;
            }
    
        2
  •  79
  •   Jacob    12 年前

    使用流将内容写入webrequest

    string data = "username=<value>&password=<value>"; //replace <value>
    byte[] dataStream = Encoding.UTF8.GetBytes(data);
    private string urlPath = "http://xxx.xxx.xxx/manager/";
    string request = urlPath + "index.php/org/get_org_form";
    WebRequest webRequest = WebRequest.Create(request);
    webRequest.Method = "POST";
    webRequest.ContentType = "application/x-www-form-urlencoded";
    webRequest.ContentLength = dataStream.Length;  
    Stream newStream=webRequest.GetRequestStream();
    // Send the data.
    newStream.Write(dataStream,0,dataStream.Length);
    newStream.Close();
    WebResponse webResponse = webRequest.GetResponse();  
    
        3
  •  9
  •   feroze    14 年前

    对于表单POST,最好的方法是将WebClient.UploadValues()与POST方法一起使用。

        4
  •  4
  •   Sandeep Kumar M    9 年前

    希望这样行

    webRequest.Credentials= new NetworkCredential("API_User","API_Password");
    
        5
  •  2
  •   Keith Aymar    4 年前

    string credentials = Convert.ToBase64String(Encoding.ASCII.GetBytes(_username + ":" + _password));
    
    HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(Request);
    webRequest.Headers.Add("Authorization", string.Format("Basic {0}", credentials));
    webRequest.ContentType = "application/x-www-form-urlencoded";
    webRequest.Method = WebRequestMethods.Http.Post;
    webRequest.AllowAutoRedirect = true;
    webRequest.Proxy = null;
    
    string data = "phone_number=19735559042"; 
    byte[] dataStream = Encoding.UTF8.GetBytes(data);
    
    request.ContentLength = dataStream.Length;
    Stream newStream = webRequest.GetRequestStream();
    newStream.Write(dataStream, 0, dataStream.Length);
    newStream.Close();
    
    HttpWebResponse response = (HttpWebResponse)webRequest.GetResponse();
    Stream stream = response.GetResponseStream();
    StreamReader streamreader = new StreamReader(stream);
    string s = streamreader.ReadToEnd();
    
        6
  •  1
  •   Demetre Phipps    5 年前

    //Visual Basic Implementation Request and Response String
      Dim params = "key1=value1&key2=value2"
        Dim byteArray = UTF8.GetBytes(params)
        Dim url = "https://okay.com"
        Dim client = WebRequest.Create(url)
        client.Method = "POST"
        client.ContentType = "application/x-www-form-urlencoded"
        client.ContentLength = byteArray.Length
        Dim stream = client.GetRequestStream()
    
        //sending the data
        stream.Write(byteArray, 0, byteArray.Length)
        stream.Close()
    
    //getting the full response in a stream        
    Dim response = client.GetResponse().GetResponseStream()
    
    //reading the response 
    Dim result = New StreamReader(response)
    
    //Writes response string to Console
        Console.WriteLine(result.ReadToEnd())
        Console.ReadKey()