HttpWebRequest doesn't work with JavaScript ;-(

M

milkyway

Hello all,

This is a little frustrating ;-(

I have the following used as part of Javascript code. I am trying to
send values from the client to the server following the information
from this web site: http://www.netomatix.com/HttpPostData.aspx

But what I have found is that the code below generates an error and
does not seem to work.


// Prepare web request...
HttpWebRequest myRequest = (HttpWebRequest)
HttpWebRequest.Create("http://localhost:2255/Test.aspx");
myRequest.Method = "POST";
myRequest.ContentType="application/x-www-form-urlencoded";
myRequest.ContentLength = data.Length;

Stream newStream=myRequest.GetRequestStream();
// Send the data.
newStream.Write(data,0,data.Length);
newStream.Close();


Please, please help! I am sooo tired! What am I doing wrong?

Regards.
 
M

milkyway

OK - I think the problem was that the code above was for C# and not
javascript? They both look the same ;-/

Anywho, I tried the following code below:

function sendDataToServer (url, dataToPost) {
var httpRequest;
if (typeof ActiveXObject != 'undefined') {
httpRequest = new ActiveXObject('Microsoft.XMLHTTP');
}
else if (typeof XMLHttpRequest != 'undefined') {
httpRequest = new XMLHttpRequest();
}
if (httpRequest) {
httpRequest.open('POST', url, false);
httpRequest.setRequestHeader('Content-Type',
'application/x-www-form-urlencoded');

alert("about to post the data");
httpRequest.send(dataToPost);
return httpRequest;
}
else {
return void 0;
}
}

And this seems to work - but now I am trying to get the values out on
the server side. I tried the following code below:

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class Test : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack)
{
//do whatever with the form data here
string firstName =
(string)Request.QueryString["FDepents44"];
Console.WriteLine(firstName);
}
}
}

I used the debugger and found that "IsPostBack" is false so the snippet
of code is not being executed. So, how can one get the data out on the
server side using C#? Is the call from the client (using Javascript)
correct? I am just wondering because (as mentioned before) IsPostBack
is set to false.

TIA
 
M

Mr Newbie

Not done too much jiggerypokery with Javaqscript as far as programatically
posting like described here, but it would seem that POST and POSTBACK would
be two different beasts.

Looking at your code you make one POST without first having made a GET, so
it is hard to see how postback could occur.

I may be completely wrong here, and I am sure someone will no doubt correct
me.

Regards Mr N . . .
 
M

milkyway

Thanks for the pointer. Is there a correct way to write code on the
server side whenever a POST is being done from the client in C#? I
thought that one was to use the page_load somehow.

Also, when I am sending the string, it is in the form of:
TableName=FDepents&FDepents11=600&FDepents12=609 ....

I have now seen (through the debugger), that the following code:

string firstName =
(string)Request.QueryString.Get("TableName");

Just returns a null, even though in the part of the code
alert("about to post the data");
httpRequest.send(dataToPost); <--- HERE
return httpRequest;

Clearly has the parameters being passed in..

Sigh - will wonders ever cease
 
M

Mr Newbie

The if( Page.IsPostback ) construct is the correct way to test if this is a
postback request; Its just that your code which generates the post to the
server is in some question. Having said that, as I have not done this, so I
cant comment on the vailidy of your approach other than one must have to
trick ( if possible ) ASP.NET into a normal mode of operation which would
make it think that this is postback and not the first GET.

As far as the code which your javscript passes to the receiving aspx page,
have you tried this manually ( IE Creating the URL on notepad or something
and pasting it into the browser address bar ). Dont forget to put the '?'
after the basic URL before your query string. Alternatively, there may be
some character stripping going on if this is going though a gateway or
something???!??!??!?!

Let me know how you are getting on, as I find this topic interesting .

Regards Mr N . . . .
 
M

milkyway

Hi MrN,

I just decided to use the forms.submit since it did not work. Here is a
link to where I obtained the information, perhaps you can try:

http://groups.google.com/group/de.c...ipt+Http+Request+POST&rnum=8#f896931c799d7772

It is in German but one can understand enough and see the code below.
Here is another:

http://groups.google.com/group/micr...quest+Javascript+POST&rnum=2#1ae7f72f2f4da835

Also, it was my understanding that this can only work with MS browsers
- soooo - I left it alone.

Kindest Regards.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top