There is a visa form in
https://evisaforms.state.gov/ds156.asp. After filling the field of this form, and continue, system create a pdf file with the value of this form.
I want to take the values from my database and fill the created pdf with these values, then show the pdf.
string message = "fPassportNumber=121212";
HttpWebRequest Request = (HttpWebRequest)WebRequest.Create("https://evisaforms.state.gov/ds156_complete.asp?pdf=DS156_Complete.pdf");
Request.Method = "POST";
Request.ContentLength = message.Length;
Request.ContentType = "application/x-www-form-urlencoded";
StreamWriter myWriter = new StreamWriter(Request.GetRequestStream());
myWriter.Write(message);
if(myWriter != null)
myWriter.Close();
HttpWebResponse Response = (HttpWebResponse)Request.GetResponse();
StreamReader sr = new StreamReader(Response.GetResponseStream(), Encoding.UTF8);
int count; string str = ""; char [] ReadBuf = new char[1024]; do
{
count = sr.Read(ReadBuf, 0, 1024); if (0 != count)
{
str += new string(ReadBuf);
}
}while(count > 0);
<div>
I wrote the above C# code on ASP.NET page, but it didnt work, it redirect me an other page.
Do you think that there is a control in the visa site and redirect me to home page site.
Response.ContentType = "application/pdf"; int buffer = 1024; byte[] data = new byte[buffer]; int count = 0; int offset = 0; do
{
count = str.Read(data, offset, buffer);
Response.BinaryWrite(data);
Response.Flush();
} while (count != 0);
The code was successfully worked but today I face with the below exception. Is there any solution for this exception?
Exception:
The request was aborted: The request was canceled. - at System.Net.ConnectStream.CloseInternal(Boolean internalCall, Boolean aborting) at System.Net.ConnectStream.System.Net.ICloseEx.CloseEx(CloseExState closeState) at System.Net.ConnectStream.Dispose(Boolean
disposing) at System.IO.Stream.Close() at System.IO.StreamWriter.Dispose(Boolean disposing) at System.IO.StreamWriter.Close() at _user_DS156.Page_Load(Object sender, EventArgs e)
pirimoglu
Member
1 Points
8 Posts
HttpWebRequest post values to other page
Aug 19, 2007 12:02 PM|LINK
Hello everyone,
There is a visa form in https://evisaforms.state.gov/ds156.asp. After filling the field of this form, and continue, system create a pdf file with the value of this form.
I want to take the values from my database and fill the created pdf with these values, then show the pdf.
string message = "fPassportNumber=121212";
<div></div>HttpWebRequest Request = (HttpWebRequest)WebRequest.Create("https://evisaforms.state.gov/ds156_complete.asp?pdf=DS156_Complete.pdf");
Request.Method = "POST";
Request.ContentLength = message.Length;
Request.ContentType = "application/x-www-form-urlencoded";
StreamWriter myWriter = new StreamWriter(Request.GetRequestStream());
myWriter.Write(message);
if(myWriter != null)
myWriter.Close();
HttpWebResponse Response = (HttpWebResponse)Request.GetResponse();
StreamReader sr = new StreamReader(Response.GetResponseStream(), Encoding.UTF8);
int count; string str = "";
char [] ReadBuf = new char[1024];
do
{
count = sr.Read(ReadBuf, 0, 1024);
if (0 != count)
{
str += new string(ReadBuf);
}
}while(count > 0);
HttpWebRequest HttpWebResponse
gunteman
All-Star
22406 Points
3305 Posts
Re: HttpWebRequest post values to other page
Aug 19, 2007 10:29 PM|LINK
Yes, there is some kind of control. I actually think that it's a http referer check, which is kind of lame, but nevertheless...
Try adding a referer header:
Request.Headers.Add(HttpRequestHeader.Referer,"https://evisaforms.state.gov/ds156.asp");
pirimoglu
Member
1 Points
8 Posts
Re: HttpWebRequest post values to other page
Aug 20, 2007 08:43 PM|LINK
This statement gives an error : "parameter name:name" Exception
gunteman
All-Star
22406 Points
3305 Posts
Re: HttpWebRequest post values to other page
Aug 20, 2007 09:12 PM|LINK
Well, then use Request.Referer = "https://evisaforms.state.gov/ds156.asp" instead.
david8021
Member
72 Points
11 Posts
Re: HttpWebRequest post values to other page
Aug 22, 2007 08:29 AM|LINK
Hi pirimoglu ,
Do you solve your problem?
pirimoglu
Member
1 Points
8 Posts
Re: HttpWebRequest post values to other page
Aug 22, 2007 05:04 PM|LINK
Hi;
It is not completely solved my problem. Becasu the response pdf gives error and can not open the page.
I used below C# code and open my aspx page with editing ".pdf" word for IE
string message = "fPassportNumber=121212";
HttpWebRequest req = (HttpWebRequest)WebRequest.Create("https://evisaforms.state.gov/ds156_complete.asp?pdf=DS156_Complete.pdf");
req.UserAgent = "Client Cert Sample";
req.Method = "POST";
req.ContentType = "application/x-www-form-urlencoded";
req.Referer = "https://evisaforms.state.gov/ds156.asp";
StreamWriter myWriter = myWriter = new StreamWriter(req.GetRequestStream());
myWriter.Close();
HttpWebResponse rep = (HttpWebResponse)req.GetResponse();
Stream str = rep.GetResponseStream();
Response.Clear();
Response.ClearContent();
Response.ClearHeaders();
Response.ContentType = "application/pdf";
int buffer = 1024;
byte[] data = new byte[buffer];
int count = 0;
int offset = 0;
do
{
count = str.Read(data, offset, buffer);
Response.BinaryWrite(data);
Response.Flush();
}
while (count != 0);
rep.Close();
Response.End();
gunteman
All-Star
22406 Points
3305 Posts
Re: HttpWebRequest post values to other page
Aug 23, 2007 06:02 PM|LINK
It's the output process that has to be fixed. In your code the last chunk of data will (may) contain data from the previous chunk, in the remainder.
Something like this should work (untested)
string message = "fPassportNumber=121212"; HttpWebRequest req = (HttpWebRequest)WebRequest.Create("https://evisaforms.state.gov/ds156_complete.asp?pdf=DS156_Complete.pdf"); req.UserAgent = "Client Cert Sample"; req.Method = "POST"; req.ContentType = "application/x-www-form-urlencoded"; req.Referer = "https://evisaforms.state.gov/ds156.asp"; StreamWriter myWriter = myWriter = new StreamWriter(req.GetRequestStream()); myWriter.Close(); HttpWebResponse rep = (HttpWebResponse)req.GetResponse(); Stream str = rep.GetResponseStream(); Response.Clear(); Response.ClearContent(); Response.ClearHeaders(); Response.ContentType = "application/pdf"; int bufferSize = 1024; byte[] buffer = new byte[bufferSize]; int bytesRead; while ((bytesRead = str.Read(buffer, 0, bufferSize)) > 0) { Response.OutputStream.Write(buffer, 0, bytesRead); } rep.Close(); Response.End();pirimoglu
Member
1 Points
8 Posts
Re: HttpWebRequest post values to other page
Aug 23, 2007 09:07 PM|LINK
[Yes] Yeap, It is OK! This solution is useful for my problem.
Thanks all, especially to gunteman.
pirimoglu
Member
1 Points
8 Posts
Re: HttpWebRequest post values to other page
Feb 13, 2008 09:42 PM|LINK
The code was successfully worked but today I face with the below exception. Is there any solution for this exception?
Exception:
The request was aborted: The request was canceled. - at System.Net.ConnectStream.CloseInternal(Boolean internalCall, Boolean aborting) at System.Net.ConnectStream.System.Net.ICloseEx.CloseEx(CloseExState closeState) at System.Net.ConnectStream.Dispose(Boolean disposing) at System.IO.Stream.Close() at System.IO.StreamWriter.Dispose(Boolean disposing) at System.IO.StreamWriter.Close() at _user_DS156.Page_Load(Object sender, EventArgs e)
Code:
HttpWebRequest req = (HttpWebRequest)WebRequest.Create("https://evisaforms.state.gov/ds156_complete.asp?pdf=DS156_Complete.pdf"); req.UserAgent = "Client Cert Sample"; req.Method = "POST"; req.ContentLength = message.Length; req.ContentType = "application/x-www-form-urlencoded"; req.Referer = "https://evisaforms.state.gov/ds156.asp"; StreamWriter myWriter = new StreamWriter(req.GetRequestStream()); myWriter.Write(message); myWriter.Close(); HttpWebResponse rep = (HttpWebResponse)req.GetResponse(); Stream str = rep.GetResponseStream(); Response.Clear(); Response.ClearContent(); Response.ClearHeaders(); Response.ContentType = "application/pdf"; int bufferSize = 1024; byte[] buffer = new byte[bufferSize]; int bytesRead; while ((bytesRead = str.Read(buffer, 0, bufferSize)) > 0) { Response.OutputStream.Write(buffer, 0, bytesRead); } rep.Close(); Response.End();