How to post data on JSON web services in Windows Phone 8 - c#

I want to post data on JSON web services for login credentials for user.
I use the below code to post data on JSON web service.
private void Button_Click_1(object sender, RoutedEventArgs e)
{
// Create a new HttpWebRequest object.
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://test/TestService/Service.svc/json/Login");
request.ContentType = "application/json";
//request.UserAgent = "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0; Touch)";
// request.CookieContainer = cookie;
// Set the Method property to 'POST' to post data to the URI.
request.Method = "POST";
// start the asynchronous operation
request.BeginGetRequestStream(new AsyncCallback(GetRequestStreamCallback), request);
}
private void GetRequestStreamCallback(IAsyncResult asynchronousResult)
{
HttpWebRequest request = (HttpWebRequest)asynchronousResult.AsyncState;
// End the operation
Stream postStream = request.EndGetRequestStream(asynchronousResult);
//postData value
string postData = "{'userid': '" + textUserid.Text + "','password':'" + textPassword.Text + "'}";
// Convert the string into a byte array.
byte[] byteArray = Encoding.UTF8.GetBytes(postData);
// Write to the request stream.
postStream.Write(byteArray, 0, postData.Length);
postStream.Close();
// Start the asynchronous operation to get the response
request.BeginGetResponse(new AsyncCallback(GetResponseCallback), request);
}
private void GetResponseCallback(IAsyncResult asynchronousResult)
{
HttpWebRequest request = (HttpWebRequest)asynchronousResult.AsyncState;
// End the operation
HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(asynchronousResult);
Stream streamResponse = response.GetResponseStream();
StreamReader streamRead = new StreamReader(streamResponse);
string read = streamRead.ReadToEnd();
//respond from httpRequest
//TextBox.Text = read;
MessageBox.Show("Your Response: " + read);
// Close the stream object
streamResponse.Close();
streamRead.Close();
response.Close();
}
and I import following namespace in my code
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Navigation;
using Microsoft.Phone.Controls;
using Microsoft.Phone.Shell;
using System.Text;
I am calling Button_Click_1 method clicking login button from my Windows Phone simulator.
But I am getting this error:
Error 1 'System.Net.WebRequest' does not contain a definition for 'GetRequestStream' and no extension method 'GetRequestStream' accepting a first argument of type 'System.Net.WebRequest' could be found (are you missing a using directive or an assembly reference?) E:\Users\maan\Documents\Visual Studio 2012\Projects\TestWebservice\TestWebservice\MainPage.xaml.cs 99 39 TestWebservice
and
Error 2 'System.Net.WebRequest' does not contain a definition for 'GetResponse' and no extension method 'GetResponse' accepting a first argument of type 'System.Net.WebRequest' could be found (are you missing a using directive or an assembly reference?) E:\Users\maan\Documents\Visual Studio 2012\Projects\TestWebservice\TestWebservice\MainPage.xaml.cs 106 39 TestWebservice
Please help me I am new to developing Windows mobile application.

Please check the below code, i hope it will help you:
void sendRequest()
{
Uri myUri = new Uri(http://www.yourwebsite.com);
HttpWebRequest myRequest = (HttpWebRequest)HttpWebRequest.Create(myUri);
myRequest.Method = AppResources.POST;
myRequest.BeginGetRequestStream(new AsyncCallback(GetRequestStreamCallback), myRequest);
}
void GetRequestStreamCallback(IAsyncResult callbackResult)
{
HttpWebRequest myRequest = (HttpWebRequest)callbackResult.AsyncState;
// End the stream request operation
Stream postStream = myRequest.EndGetRequestStream(callbackResult);
// Create the post data
string postData = "INSERT HERE THE JASON YOU WANT TO SEND";
byte[] byteArray = Encoding.UTF8.GetBytes(postData);
// Add the post data to the web request
postStream.Write(byteArray, 0, byteArray.Length);
postStream.Close();
// Start the web request
myRequest.BeginGetResponse(new AsyncCallback(GetResponsetStreamCallback), myRequest);
}
void GetResponsetStreamCallback(IAsyncResult callbackResult)
{
lib = new ApiLibrary();
try
{
HttpWebRequest request = (HttpWebRequest)callbackResult.AsyncState;
HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(callbackResult);
string result = "";
using (StreamReader httpWebStreamReader = new StreamReader(response.GetResponseStream()))
{
result = httpWebStreamReader.ReadToEnd();
}
string APIResult = result;
}
catch (Exception e)
{
}
}

Related

Client to send SOAP request to web service

I am trying to send SOAP request to my web service and from this question - Client to send SOAP request and received response
I got this piece of code:
using System.Xml;
using System.Net;
using System.IO;
public static void CallWebService()
{
var _url = "http://xxxxxxxxx/Service1.asmx";
var _action = "http://xxxxxxxx/Service1.asmx?op=HelloWorld";
XmlDocument soapEnvelopeXml = CreateSoapEnvelope();
HttpWebRequest webRequest = CreateWebRequest(_url, _action);
InsertSoapEnvelopeIntoWebRequest(soapEnvelopeXml, webRequest);
// begin async call to web request.
IAsyncResult asyncResult = webRequest.BeginGetResponse(null, null);
// suspend this thread until call is complete. You might want to
// do something usefull here like update your UI.
asyncResult.AsyncWaitHandle.WaitOne();
// get the response from the completed web request.
string soapResult;
using (WebResponse webResponse = webRequest.EndGetResponse(asyncResult))
{
using (StreamReader rd = new StreamReader(webResponse.GetResponseStream()))
{
soapResult = rd.ReadToEnd();
}
Console.Write(soapResult);
}
}
private static HttpWebRequest CreateWebRequest(string url, string action)
{
HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(url);
webRequest.Headers.Add("SOAPAction", action);
webRequest.ContentType = "text/xml;charset=\"utf-8\"";
webRequest.Accept = "text/xml";
webRequest.Method = "POST";
return webRequest;
}
private static XmlDocument CreateSoapEnvelope()
{
XmlDocument soapEnvelopeDocument = new XmlDocument();
soapEnvelopeDocument.LoadXml(#"<SOAP-ENV:Envelope xmlns:SOAP-ENV=""http://schemas.xmlsoap.org/soap/envelope/"" xmlns:xsi=""http://www.w3.org/1999/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/1999/XMLSchema""><SOAP-ENV:Body><HelloWorld xmlns=""http://tempuri.org/"" SOAP-ENV:encodingStyle=""http://schemas.xmlsoap.org/soap/encoding/""><int1 xsi:type=""xsd:integer"">12</int1><int2 xsi:type=""xsd:integer"">32</int2></HelloWorld></SOAP-ENV:Body></SOAP-ENV:Envelope>");
return soapEnvelopeDocument;
}
private static void InsertSoapEnvelopeIntoWebRequest(XmlDocument soapEnvelopeXml, HttpWebRequest webRequest)
{
using (Stream stream = webRequest.GetRequestStream())
{
soapEnvelopeXml.Save(stream);
}
}
But it doesn't work for me, it says there is no definition for GetRequestStream() and Headers where you add the SOAPAction under HttpWebRequest, can anyone help me solve the problem?
Edit:
The Errors occur on the line
using (Stream stream = webRequest.GetRequestStream())
And it gives the error
Error CS1061 'HttpWebRequest' does not contain a definition for 'GetRequestStream' and no extension method 'GetRequestStream' accepting a first argument of type 'HttpWebRequest' could be found (are you missing a using directive or an assembly reference?)
And another error on the line
webRequest.Headers.Add("SOAPAction", action);
And it gives the error
Error CS1929 'WebHeaderCollection' does not contain a definition for 'Add' and the best extension method overload 'SettersExtensions.Add(IList, BindableProperty, object)' requires a receiver of type 'IList'
Use for adding headers:
webRequest.Headers["HeaderToken"] = "HeaderValue";
And for GetRequestStream use:
using (var stream = await Task.Factory.FromAsync<Stream>(webRequest.BeginGetRequestStream, webRequest.EndGetRequestStream, null))
{
reqBody.Save(stream);
}

How can be POST Audio file and get response WP8 C#

i'm trying to POST audio file to my Web Service and get Response from Server. I search on Google but no answer for Windows Phone 8. So please help me.
Update 1 Here my code to try Upload Audio file but have error on server
byte[] buffer;
void Upload(Stream fileStream)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(new Uri("http://localhost:11111/api/SpeechRecognition?dataType=json"));
request.Method = "POST";
request.ContentType = "multipart/form-data";
request.UseDefaultCredentials = true;
buffer = new byte[(int)fileStream.Length];
request.BeginGetRequestStream(new AsyncCallback(ReadCallback), request);
}
private void ReadCallback(IAsyncResult asynchronousResult)
{
HttpWebRequest request = (HttpWebRequest)asynchronousResult.AsyncState;
// End the operation.
Stream postStream = request.EndGetRequestStream(asynchronousResult);
postStream.Write(buffer, 0, buffer.Length);
postStream.Close();
request.BeginGetResponse(new AsyncCallback(ResponseCallback), request);
}
private void ResponseCallback(IAsyncResult asynchronousResult)
{
HttpWebRequest request = (HttpWebRequest)asynchronousResult.AsyncState;
HttpWebResponse resp = (HttpWebResponse)request.EndGetResponse(asynchronousResult);
Stream streamResponse = resp.GetResponseStream();
StreamReader streamRead = new StreamReader(streamResponse);
string responseString = streamRead.ReadToEnd();
Dispatcher.BeginInvoke(new Action(() => { MessageBox.Show(responseString); }));
// Close the stream object.
streamResponse.Close();
streamRead.Close();
// Release the HttpWebResponse.
resp.Close();
}
In server ASP.NET 4.5 have error that line
await Request.Content.ReadAsMultipartAsync(provider);

Calling web service method in Windows Phone 8 App

I have a web service hosted on a service that is interacting SQL Server.
I have to develop a windows phone 8 app that should interact with that web service for fetching data from server.
I m using webclient but getting the response :the remote server returned an error notfound ".
I don't know how to call a method..
And which one is better
HTTPClient
Webclient
or any other method
public ConstructoreName()
{
InitializeComponent();
ServiceReferenceCustomer.OfferhutCustomerClient ohCustomer = new ServiceReferenceCustomer.OfferhutCustomerClient();
ohCustomer.getOfferAsync(3); //here getOffer is a method and 3 is a parameter
ohCustomer.getOfferCompleted += new EventHandler<getOfferCompletedEventArgs>(getOffer_completed);
}
void getOffer_completed(object sender, getOfferCompletedEventArgs e)
{
ServiceReferenceCustomer.offer res;
res = e.Result;
offerTitle.Text = res.title;
offerFirstPara.Text = res.shopName + " \n" + res.title + " \n" + res.date;
offerSecendPara.Text = res.description;
}
I think this is help for you..
I think this should be help you:
private void Button_Click_1(object sender, RoutedEventArgs e)
{
// Create a new HttpWebRequest object.
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.example.com/webservicelogin/webservice.asmx/ReadTotalOutstandingInvoice");
request.ContentType = "application/x-www-form-urlencoded";
request.UserAgent = "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0; Touch)";
request.CookieContainer = cookie;
// Set the Method property to 'POST' to post data to the URI.
request.Method = "POST";
// start the asynchronous operation
request.BeginGetRequestStream(new AsyncCallback(GetRequestStreamCallback), request);
}
private void GetRequestStreamCallback(IAsyncResult asynchronousResult)
{
HttpWebRequest request = (HttpWebRequest)asynchronousResult.AsyncState;
// End the operation
Stream postStream = request.EndGetRequestStream(asynchronousResult);
//postData value
string postData = "xxxxxxxxxx";
// Convert the string into a byte array.
byte[] byteArray = Encoding.UTF8.GetBytes(postData);
// Write to the request stream.
postStream.Write(byteArray, 0, postData.Length);
postStream.Close();
// Start the asynchronous operation to get the response
request.BeginGetResponse(new AsyncCallback(GetResponseCallback), request);
}
private void GetResponseCallback(IAsyncResult asynchronousResult)
{
HttpWebRequest request = (HttpWebRequest)asynchronousResult.AsyncState;
// End the operation
HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(asynchronousResult);
Stream streamResponse = response.GetResponseStream();
StreamReader streamRead = new StreamReader(streamResponse);
string read = streamRead.ReadToEnd();
//respond from httpRequest
TextBox.Text = read;
// Close the stream object
streamResponse.Close();
streamRead.Close();
response.Close();
}

Sending HTTP POST Request with XML to a web service and reading response data in C# for windows 8 phone

I a newbie at windows 8 phone development. I want to send an aync HTTP POST Request to a PHP web service with some headers and XML in the request body.
Also, I want to read the response sent back by the PHP web service.
Please guide me, how can I achieve the above two stated things.
what I have tried until now i am giving below
// Main begins program execution.
public static void SendRequest()
{
HttpWebRequest webRequest = (HttpWebRequest)HttpWebRequest.CreateHttp("http://mytestserver.com/Test.php");
webRequest.Method = "POST";
webRequest.ContentType = "text/xml";
webRequest.Headers["SOURCE"] = "WinApp";
var response = await httpRequest(webRequest);
}
public static async Task<string> httpRequest(HttpWebRequest request)
{
string received;
using (var response = (HttpWebResponse)(await Task<WebResponse>.Factory.FromAsync(request.BeginGetResponse, request.EndGetResponse, null)))
{
using (var responseStream = response.GetResponseStream())
{
using (var sr = new StreamReader(responseStream))
{
received = await sr.ReadToEndAsync();
MessageBox.Show(received.ToString());
}
}
}
return received;
}
I am able to send the request using the above code. I just need to know that how I can send the XML in the request body to my web service.
For Set a file, and receive a server Response, I use that for sending .csv files:
First I initialize a POST Request:
/// <summary>
/// Initialize the POST HTTP request.
/// </summary>
public void SentPostReport()
{
string url = "http://MyUrlPerso.com/";
Uri uri = new Uri(url);
// Create a boundary for HTTP request.
Boundary = "----------------------------" + DateTime.Now.Ticks.ToString("x");
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);
request.ContentType = "multipart/form-data; boundary=" + Boundary;
request.Method = "POST";
request.BeginGetRequestStream(new AsyncCallback(GetRequestStreamCallback), est);
allDone.WaitOne();
}
After initialized Request, I send the differents parts of my files (headers + content + footer).
/// <summary>
/// Send a File with initialized request.
/// </summary>
private void GetRequestStreamCallback(IAsyncResult asynchronousResult)
{
string contentType = "binary";
string myFileContent = "one;two;three;four;five;"; // CSV content.
HttpWebRequest request = (HttpWebRequest)asynchronousResult.AsyncState;
Stream memStream = request.EndGetRequestStream(asynchronousResult);
byte[] boundarybytes = System.Text.Encoding.UTF8.GetBytes("\r\n--" + Boundary + "\r\n");
memStream.Write(boundarybytes, 0, boundarybytes.Length);
// Send headers.
string headerTemplate = "Content-Disposition: form-data; ";
headerTemplate += "name=\"{0}\"; filename=\"{1}\"\r\nContent-Type: " + contentType + "\r\n\r\n";
string fileName = "MyFileName.csv";
string header = string.Format(headerTemplate, "file", fileName);
byte[] headerbytes = System.Text.Encoding.UTF8.GetBytes(header);
memStream.Write(headerbytes, 0, headerbytes.Length);
byte[] contentbytes = System.Text.Encoding.UTF8.GetBytes(myFileContent);
// send the content of the file.
memStream.Write(contentbytes, 0, contentbytes.Length);
// Send last boudary of the file ( the footer) for specify post request is finish.
byte[] boundarybytesend = System.Text.Encoding.UTF8.GetBytes("\r\n--" + Boundary + "--\r\n");
memStream.Write(boundarybytesend, 0, boundarybytesend.Length);
memStream.Flush();
memStream.Close();
allDone.Set();
// Start the asynchronous operation to get the response
request.BeginGetResponse(new AsyncCallback(GetResponseCallback), request);
}
And, Finnaly, I get The response server response, indicate the file is transmetted.
/// <summary>
/// Get the Response server.
/// </summary>
private static void GetResponseCallback(IAsyncResult asynchronousResult)
{
HttpWebRequest request = (HttpWebRequest)asynchronousResult.AsyncState;
try
{
HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(asynchronousResult);
Stream streamResponse = response.GetResponseStream();
StreamReader streamRead = new StreamReader(streamResponse);
string responseString = streamRead.ReadToEnd(); // this is a response server.
// Close the stream object
streamResponse.Close();
streamRead.Close();
// Release the HttpWebResponse
response.Close();
}
catch (Exception ex)
{
// error.
}
}
This sample works on Windows Phone 7 and Windows Phone 8.
This is for send a .csv content. You can adapt this code for send Xml content.
Replace just
string myFileContent = "one;two;three;four;five;"; // CSV content.
string fileName = "MyFileName.csv";
by your XML
string myFileContent = "<xml><xmlnode></xmlnode></xml>"; // XML content.
string fileName = "MyFileName.xml";
If all you're looking to do is take XML you've already generated and add it to your existing request as content, you'll need to be able to write to the request stream. I don't particularly care for the stock model of getting the request stream, so I'd recommend the following extension to make your life a little easier:
public static class Extensions
{
public static System.Threading.Tasks.Task<System.IO.Stream> GetRequestStreamAsync(this System.Net.HttpWebRequest wr)
{
if (wr.ContentLength < 0)
{
throw new InvalidOperationException("The ContentLength property of the HttpWebRequest must first be set to the length of the content to be written to the stream.");
}
var tcs = new System.Threading.Tasks.TaskCompletionSource<System.IO.Stream>();
wr.BeginGetRequestStream((result) =>
{
var source = (System.Net.HttpWebRequest)result.AsyncState;
tcs.TrySetResult(source.EndGetRequestStream(result));
}, wr);
return tcs.Task;
}
}
From here, augment your SendRequest method:
public static void SendRequest(string myXml)
{
HttpWebRequest webRequest = (HttpWebRequest)HttpWebRequest.CreateHttp("http://mytestserver.com/Test.php");
webRequest.Method = "POST";
webRequest.Headers["SOURCE"] = "WinApp";
// Might not hurt to specify encoding here
webRequest.ContentType = "text/xml; charset=utf-8";
// ContentLength must be set before a stream may be acquired
byte[] content = System.Text.Encoding.UTF8.GetBytes(myXml);
webRequest.ContentLength = content.Length;
var reqStream = await webRequest.GetRequestStreamAsync();
reqStream.Write(content, 0, content.Length);
var response = await httpRequest(webRequest);
}
If the service you're trying to reach is a SOAP service, you could simplify this a bit more by having the IDE generate a client class for you. For more information on how to do that, check out this MSDN article. However, if the service does not have a Web Service Definition Language (WSDL) document, this approach will not be able to assist you.
You can use the HTTP Client libraries in Windows Phone 8 and use the client in the same way that Windows 8.
First, get the HTTP Client Libraries from Nuget.
And now, to perform a POST call
HttpClient client = new HttpClient();
HttpContent httpContent = new StringContent("my content: xml, json or whatever");
httpContent.Headers.Add("name", "value");
HttpResponseMessage response = await client.PostAsync("uri", httpContent);
if (response.IsSuccessStatusCode)
{
// DO SOMETHING
}
i hope this helps you :)
I have solved the problem in some other way..
class HTTPReqRes
{
private static HttpWebRequest webRequest;
public static void SendRequest()
{
webRequest = (HttpWebRequest)HttpWebRequest.CreateHttp("https://www.mydomain.com");
webRequest.Method = "PUT";
webRequest.ContentType = "text/xml; charset=utf-8";
webRequest.Headers["Header1"] = "Header1Value";
String myXml = "<Roottag><info>test</info></Roottag>";
// Convert the string into a byte array.
byte[] byteArray = Encoding.UTF8.GetBytes(myXml);
webRequest.ContentLength = byteArray.Length;
// start the asynchronous operation
webRequest.BeginGetRequestStream(new AsyncCallback(GetRequestStreamCallback), webRequest);
//webRequest.BeginGetResponse(new AsyncCallback(GetResponseCallback), webRequest);
}
private static void GetRequestStreamCallback(IAsyncResult asynchronousResult)
{
HttpWebRequest request = (HttpWebRequest)asynchronousResult.AsyncState;
// End the operation
Stream postStream = request.EndGetRequestStream(asynchronousResult);
String myXml = <Roottag><info>test</info></Roottag>";
// Convert the string into a byte array.
byte[] byteArray = Encoding.UTF8.GetBytes(myXml);
// Write to the request stream.
postStream.Write(byteArray, 0, byteArray.Length);
postStream.Close();
// Start the asynchronous operation to get the response
request.BeginGetResponse(new AsyncCallback(GetResponseCallback), request);
}
private static void GetResponseCallback(IAsyncResult asynchronousResult)
{
HttpWebRequest request = (HttpWebRequest)asynchronousResult.AsyncState;
// End the operation
HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(asynchronousResult);
Stream streamResponse = response.GetResponseStream();
StreamReader streamRead = new StreamReader(streamResponse);
string responseString = streamRead.ReadToEnd();
System.Diagnostics.Debug.WriteLine(responseString);
// Close the stream object
streamResponse.Close();
streamRead.Close();
// Release the HttpWebResponse
response.Close();
}
}
This perfectly solves my problem, send an XML within the HTTP Request and in Response receive the XML from the web service.
I recommend using the RestSharp library. You can find a sample request here.
This is what I used. It's really simple, add WindowsPhonePostClient.dll to your References (if you can't, try unblock the file first by properties->unblock), then use this code:
private void Post(string YourUsername, string Password)
{
Dictionary<string, object> parameters = new Dictionary<string, object>();
parameters.Add("User", YourUsername);
parameters.Add("Password", Password);
PostClient proxy = new PostClient(parameters);
proxy.DownloadStringCompleted += proxy_UploadDownloadStringCompleted;
proxy.DownloadStringAsync(new Uri("http://mytestserver.com/Test.php",UriKind.Absolute));
}
private void proxy_UploadDownloadStringCompleted(object sender,WindowsPhonePostClient.DownloadStringCompletedEventArgs e)
{
if (e.Error == null)
MessageBox.Show(e.Result.ToString());
}
You need to create a reference to the webservice wsdl or you could try to do it manually as detailed here:
https://stackoverflow.com/a/1609427/2638872
//The below code worked for me. I receive xml response back.
private void SendDataUsingHttps()
{
WebRequest req = null;
WebResponse rsp = null;
string fileName = #"C:\Test\WPC\InvoiceXMLs\123File.xml"; string uri = "https://service.XYZ.com/service/transaction/cxml.asp";
try
{
if ((!string.IsNullOrEmpty(uri)) && (!string.IsNullOrEmpty(fileName)))
{
req = WebRequest.Create(uri);
//req.Proxy = WebProxy.GetDefaultProxy(); // Enable if using proxy
req.Method = "POST"; // Post method
req.ContentType = "text/xml"; // content type
// Wrap the request stream with a text-based writer
StreamWriter writer = new StreamWriter(req.GetRequestStream());
// Write the XML text into the stream
StreamReader reader = new StreamReader(file);
string ret = reader.ReadToEnd();
reader.Close();
writer.WriteLine(ret);
writer.Close();
// Send the data to the webserver
rsp = req.GetResponse();
HttpWebResponse hwrsp = (HttpWebResponse)rsp;
Stream streamResponse = hwrsp.GetResponseStream();
StreamReader streamRead = new StreamReader(streamResponse);
string responseString = streamRead.ReadToEnd();
rsp.Close();
}
}
catch (WebException webEx) { }
catch (Exception ex) { }
finally
{
if (req != null) req.GetRequestStream().Close();
if (rsp != null) rsp.GetResponseStream().Close();
}
}

How to access Post data to access login data in windows phone

How to access the login authentication by the POST DATA in the below and it get from the httpFox to login the website. In other time i try to testing whether the GetRequestStreamCallback() operation will work and i found that the operation are not working and it end on the DoWork(). Why it not continue do the GetRequestStreamCallback() operation. Thanks For Helping me.
POST DATA
Parameter value
__EVENTTARGET
__EVENTARGUMENT
__VIEWSTATE /wEPDwUIMTQwOTY1MTgPZBYCAgMPZBYEAgEPZBYCZg9kFgICAQ9kFgJmD2QWAgINDxAPFgIeB0NoZWNrZWRoZGRkZAIFDzwrAAgCAA8WBB4PRGF0YVNvdXJjZUJvdW5kZx4OXyFVc2VWaWV3U3RhdGVnZAYPFgIeCklzU2F2ZWRBbGxnDxQrAAkUKwABFgIeDlJ1bnRpbWVDcmVhdGVkZxQrAAEWAh8EZxQrAAEWAh8EZxQrAAEWAh8EZxQrAAEWAh8EZxQrAAEWAh8EZxQrAAEWAh8EZxQrAAEWAh8EZxQrAAEWAh8EZ2QWAmYPZBYCAgEPZBYCZg9kFgJmD2QWAmYPZBYCZg9kFgICAg9kFgJmD2QWAmYPZBYCZg9kFgZmD2QWBmYPZBYCZg9kFgJmD2QWCAIBDw8WAh4ISW1hZ2VVcmwFG34vcHJvZHVjdGltYWdlL0NBRDAwNTQ3LmpwZ2RkAgMPDxYCHgRUZXh0BQhDQUQwMDU0N2RkAgUPDxYCHwYFVENBUkQgUFJFUFJJTlQgS0lOT0tVTklZQSBQVkMgSVNPIDAuNzZNTSA1QyAxQyAgRk9SIFBSRVBSSU5UIEtJTk9LVU5JWUEgQ0FSRCBERVNJR04gMmRkAgcPDxYCHwYFD1BSRVBSSU5URUQgQ0FSRGRkAgIPZBYCZg9kFgJmD2QWCAIBDw8WAh8FBRt+L3Byb2R1Y3RpbWFnZS9CQVIwMTE1NC5qcGdkZAIDDw8WAh8GBQhCQVIwMTE1NGRkAgUPDxYCHwYFLEdGUzQ0NzAgR1JZUEhPTiBHRlM0NDAwIEZJWEVEIFNDQU5ORVIgMkQgVVNCZGQCBw8PFgIfBgUHR1JZUEhPTmRkAgQPZBYCZg9kFgJmD2QWCAIBDw8WAh8FBRt+L3Byb2R1Y3RpbWFnZS9CQVIwMTE1My5qcGdkZAIDDw8WAh8GBQhCQVIwMTE1M2RkAgUPDxYCHwYFVkJDUDgwMDBFWFQ1IEVYVEVOREVEIDUgKDQrMSkgWUVBUlMgTUFOVUZBQ1RVUklORyBERUZFQ1QgV0FSUkFOVFkgQkNQODAwMCBEQVRBIFRFUk1JTkFMZGQCBw8PFgIfBgUPQkFSQ09ERSBTQ0FOTkVSZGQCAg9kFgZmD2QWAmYPZBYCZg9kFggCAQ8PFgIfBQUbfi9wcm9kdWN0aW1hZ2UvQkFSMDExNTIuanBnZGQCAw8PFgIfBgUIQkFSMDExNTJkZAIFDw8WAh8GBVZCQ1A4MDAwRVhUMyBFWFRFTkRFRCAzICgyKzEpIFlFQVJTIE1BTlVGQUNUVVJJTkcgREVGRUNUIFdBUlJBTlRZIEJDUDgwMDAgREFUQSBURVJNSU5BTGRkAgcPDxYCHwYFD0JBUkNPREUgU0NBTk5FUmRkAgIPZBYCZg9kFgJmD2QWCAIBDw8WAh8FBRt+L3Byb2R1Y3RpbWFnZS9CQVIwMTE1MS5qcGdkZAIDDw8WAh8GBQhCQVIwMTE1MWRkAgUPDxYCHwYFTFBIRDIwMjI2MTAxIFRQSCBUSEVSTUFMIFBSSU5USEVBRCAyMDNEUEkgRk9SIERBVEFNQVggRE1YIE0gQ0xBU1MgTUlJIFBSSU5URVJkZAIHDw8WAh8GBQ9EQVRBTUFYIE0gQ0xBU1NkZAIED2QWAmYPZBYCZg9kFggCAQ8PFgIfBQUbfi9wcm9kdWN0aW1hZ2UvQkFSMDExNTAuanBnZGQCAw8PFgIfBgUIQkFSMDExNTBkZAIFDw8WAh8GBTlCQ1A4MDAwIERBVEEgVEVSTUlOQUwgTEFTRVIgMU1CLzRNQiBSUzIzMiBVU0IgQ0FCTEUgQkxBQ0tkZAIHDw8WAh8GBQ9CQVJDT0RFIFNDQU5ORVJkZAIED2QWBmYPZBYCZg9kFgJmD2QWCAIBDw8WAh8FBRt+L3Byb2R1Y3RpbWFnZS9CQVIwMTE0OS5qcGdkZAIDDw8WAh8GBQhCQVIwMTE0OWRkAgUPDxYCHwYFPFBNNDNBMDEwMDAwMDAzMDEgUE00M0EgNC41SU5DSCAzMDBEUEkgRlQgUk9XIEVUSEVSTkVUIDEyOE1CIGRkAgcPDxYCHwYFBVBNNDNBZGQCAg9kFgJmD2QWAmYPZBYIAgEPDxYCHwUFG34vcHJvZHVjdGltYWdlL0JBUjAxMTQ4LmpwZ2RkAgMPDxYCHwYFCEJBUjAxMTQ4ZGQCBQ8PFgIfBgVhWlNONVNLUjUxIFNLT1JQSU9YMyAxNFdPUktJTkcgREFZUyBUVVJOQVJPVU5EIEVBU0UgT0YgQ0FSRSBDT01QUkVIRU5TSVZFIENPVkVSQUdFIDUtWUVBUiBQQUNLQUdFRGRkAgcPDxYCHwYFCVNLT1JQSU9YM2RkAgQPZBYCZg9kFgJmD2QWCAIBDw8WAh8FBRt+L3Byb2R1Y3RpbWFnZS9TVkMwMDEyNC5qcGdkZAIDDw8WAh8GBQhTVkMwMDEyNGRkAgUPDxYCHwYFSVNFTlRJTkVMIDIwMTIgREFUQSBFWENIQU5HRSBJTlNUQUxMQVRJT04gVEVTSU5HIEFORCBUUkFJTklORyBPTlNJVEUgMSBEQVlkZAIHDw8WAh8GBQhTRU5USU5BTGRkGAIFHl9fQ29udHJvbHNSZXF1aXJlUG9zdEJhY2tLZXlfXxYCBRxMb2dpblZpZXcxJExvZ2luMSRSZW1lbWJlck1lBQ1BU1B4RGF0YVZpZXcxBQ1BU1B4RGF0YVZpZXcxDxQrAAdkZmYCA2YCFGdkMBSkuj/XQpQVVL41154MjHTriF3AqkB5ahYmcD10itw=
__EVENTVALIDATION /wEWBgLiiri0BQKRyKzhAgKUxtegDAKi77CUBwKd6MPGBALNx9K3CuAiLP9Qxn4q+Nwy4Hl2t5zaXX+GadHLKCF8sJn6YTar
LoginView1$Login1$UserName USERNAME
LoginView1$Login1$Password PASSWORD
LoginView1$Login1$LoginButton Log In
ASPxDataView1 0;3;3
DXScript 1_141,1_79,1_123,1_82
The below code is my work so far.
public void DoWork()
{
var url = "xxxxxxxx";
// Create the web request object
HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(url);
webRequest.Method = "POST";
webRequest.ContentType = "application/x-www-form-urlencoded";
// Start the request
webRequest.BeginGetRequestStream(new AsyncCallback(GetRequestStreamCallback), webRequest);
}
void GetRequestStreamCallback(IAsyncResult asynchronousResult)
{
HttpWebRequest webRequest = (HttpWebRequest)asynchronousResult.AsyncState;
// End the stream request operation
Stream postStream = webRequest.EndGetRequestStream(asynchronousResult);
// Create the post data
// Demo POST data
string postData =
byte[] byteArray = Encoding.UTF8.GetBytes(postData);
// Add the post data to the web request
postStream.Write(byteArray, 0, byteArray.Length);
postStream.Close();
// Start the web request
webRequest.BeginGetResponse(new AsyncCallback(GetResponseCallback), webRequest);
}
void GetResponseCallback(IAsyncResult asynchronousResult)
{
try
{
HttpWebRequest webRequest = (HttpWebRequest)asynchronousResult.AsyncState;
HttpWebResponse response;
// End the get response operation
response = (HttpWebResponse)webRequest.EndGetResponse(asynchronousResult);
Stream streamResponse = response.GetResponseStream();
StreamReader streamReader = new StreamReader(streamResponse);
var Response = streamReader.ReadToEnd();
streamResponse.Close();
streamReader.Close();
response.Close();
}
catch (WebException e)
{
// Error treatment
// ...
}
}
private void button1_Click(object sender, RoutedEventArgs e)
{
DoWork();
}

Categories