example data create c# .net web-services httpwebrequest

c# - data - webrequest create



¿Cómo agregar parámetros en una WebRequest? (4)

Espero que esto funcione

webRequest.Credentials= new NetworkCredential("API_User","API_Password");

Necesito llamar a un método desde un servicio web, así que escribí este código:

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();

Pero este método requiere algunos parámetros, como los siguientes:

Datos de publicación:

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

¿Cómo puedo agregar estos parámetros en esta Webrequest?

Gracias por adelantado.


Para hacer publicaciones FORMULAR, la mejor manera es usar WebClient.UploadValues ​​() con un método POST.


Si estos son los parámetros de url-string, entonces necesita agregarlos a través de ''?'' y ''&'' chars, por ejemplo http://example.com/index.aspx?username=Api_user&password=Api_password .

Si estos son los parámetros de la solicitud POST, entonces necesita crear datos POST y escribirlos para solicitar la transmisión. Aquí hay un método de muestra:

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; }


Usa stream para escribir contenido en 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();