读书人

用WebClient来POST数据的有关问题

发布时间: 2012-02-16 21:30:36 作者: rapoo

用WebClient来POST数据的问题
比如代码
client.UploadStringAsync(uri, "id=aaaaaaa");

其中client就是一个WebClient对象
问题是。。。。。在uri所指定的web页面,可以取到 id=evsegxvds 这整个字符串,但却不能以Request.Form["id"]的方式取得aaaaaaa
怎么解决这个问题?

[解决办法]
你这是get方式吧!
第二个参数直接传值吧!把ID写到第一个参数去试试!
[解决办法]
下面的代码是我读SLExtension看到的,应该对你有帮助:

C# code
 /// <summary>    /// Method extensions for SLExtension framework    /// </summary>    public static class SLExtension    { ....         #region WebClient        /// <summary>        /// Sends an HTML form. The request is sent using POST method        /// </summary>        /// <param name="webclient">The webclient.</param>        /// <param name="uri">The URI of the resource to receive the file. </param>        /// <param name="data">The form data to upload.</param>        public static void SendHtmlForm(this WebClient webclient, Uri uri, IEnumerable<KeyValuePair<string, string>> data)        {            StringBuilder dataBuilder = new StringBuilder();            int cnt = 0;            foreach (var item in data)            {                if (cnt > 0)                {                    dataBuilder.Append('&');                }                 dataBuilder.Append(item.Key);                dataBuilder.Append('=');                dataBuilder.Append(HttpUtility.UrlEncode(item.Value));            }             webclient.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded";            webclient.UploadStringAsync(uri, dataBuilder.ToString());        }         /// <summary>        /// Sends an HTML form. The request is sent using POST method        /// </summary>        /// <param name="webclient">The webclient.</param>        /// <param name="uri">The URI of the resource to receive the file. </param>        /// <param name="data">The form data to upload.</param>        /// <param name="userToken">user state</param>        public static void SendHtmlForm(this WebClient webclient, Uri uri, IEnumerable<KeyValuePair<string, string>> data, object userToken)        {            StringBuilder dataBuilder = new StringBuilder();            int cnt = 0;            foreach (var item in data)            {                if (cnt > 0)                {                    dataBuilder.Append('&');                }                 dataBuilder.Append(item.Key);                dataBuilder.Append('=');                dataBuilder.Append(HttpUtility.UrlEncode(item.Value));            }             webclient.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded";            webclient.UploadStringAsync(uri, "POST", dataBuilder.ToString(), userToken);        }         #endregion WebClient        #endregion Public Methods    }
[解决办法]
WebClient.UploadStringAsync 方法 (Uri, String, String, Object)

address
型:System.Uri
要接收案之源的 URI。 於 HTTP 源而言, URI 必出可以接受使用 POST 方法送之要求的源,例如指令或 ASP 。

method
型:System.String
送案源所使用的 HTTP 方法。 如果 null, HTTP 的值 POST。

data
型:System.String
要上的字串。

userToken
型:System.Object
使用者定的物件,物件在非同步作完成至叫用的方法。

[解决办法]

读书人网 >CAD教程

热点推荐