WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   HTTP post i C# från Codebehind? (https://www.wn.se/forum/showthread.php?t=1050025)

naak2803 2011-09-14 15:39

HTTP post i C# från Codebehind?
 
Hej,

jag har letat hur mycket som helst utan att lyckas...

ta ex sidan; http://www.prylbanken.se/
så ser man alla prylar på fösta sidan.. men jag skulle vilja posta data i sök fältet att man från min sida postar ex ordet "xbox" så ser man direkta resulltatet på xbox?


det är ju enklare om man t ex tar blocket.se, där behöver man endast ange queryn direkt i URLen "http://www.blocket.se/stockholm?q=xbox", men eftersom prylbanken kräven en post med data från sökfältet så behöver jag göra något annorlunda...

någon som har lite lust att hjälpa till...
håller på att utveckla i .NET C#

allstars 2011-09-14 16:42

Kör du web forms eller mvc?

naak2803 2011-09-14 17:15

Citat:

Ursprungligen postat av allstars (Inlägg 20417560)
Kör du web forms eller mvc?

kör webforms..
det ska vara en webapplikation

har testat med denna kod, får inte sidan EFTER data postet...
sidan post.aspx innehåller en textfield1. på denna sida finns även en submit knapp... när man trycker på den dyker texten man har skrivit i textfielden upp i en label (lablel1).

nu vill jag kunna komma åt texten i labeln från doAPost.aspx.cs. Notera dock att post.aspx kan ligga på helt en annan server som jag inte har käll koden till... tex blocket.se

[kod]

doAPost.aspx.cs

string uriString = "http://localhost:65341/test/post.aspx";

// Create a new WebClient instance.
WebClient myWebClient = new WebClient();

// Create a new NameValueCollection instance to hold some custom parameters to be posted to the URL.
NameValueCollection myNameValueCollection = new NameValueCollection();

string sok = "xbox";

// Add necessary parameter/value pairs to the name/value container.
myNameValueCollection.Add("TextBox1", sok);


// 'The Upload(String,NameValueCollection)' implicitly method sets HTTP POST as the request method.
byte[] responseArray = myWebClient.UploadValues(uriString, myNameValueCollection);


Literal1.Text = Encoding.ASCII.GetString(responseArray);

[/kod]

Kimpo 2011-09-14 20:11

Sökformuläret kör en HTTP GET request inte en POST

Nedan ser du en sökurl med sökparametrar med sökordet playstation

http://www.prylbanken.se/search/?so_...so_priceMax=-1

Sedan körs en sökning och servern redirectar dig till restultatsidan med en 302 redirect därav anledningen att du inte får resultaten direkt

i url:en på resultatsidan ser du massa siffror i slutet, det verkar vara id:n på sparade sökningar som du kan använda dig av om du nu vill rippa deras content

Jag tror det finns en anledning till att de valt att köra en lösning av detta slag ;)

dAEk 2011-09-14 22:44

Citat:

Ursprungligen postat av allstars (Inlägg 20417560)
Kör du web forms eller mvc?

...frågar han som förmodligen lägger för mycket kod i Page_Load. ;)

allstars 2011-09-15 08:21

Citat:

Ursprungligen postat av dAEk (Inlägg 20417591)
...frågar han som förmodligen lägger för mycket kod i Page_Load. ;)

Säger han som kör mvc, men när jag kör web forms då har jag faktiskt design på min kod, tr det eller ej :)

naak2803 2011-09-15 09:20

inget av detta är ju svar på min fråga? :S

dAEk 2011-09-15 21:09

Citat:

Ursprungligen postat av allstars (Inlägg 20417614)
Säger han som kör mvc, men när jag kör web forms då har jag faktiskt design på min kod, tr det eller ej :)

Då fattar jag ännu mindre varför det är intressant om man kör webforms eller MVC men skitsamma. :)

dAEk 2011-09-15 21:35

Citat:

Ursprungligen postat av naak2803 (Inlägg 20417617)
inget av detta är ju svar på min fråga? :S

Nä, det stämmer. Ursäkta.

För att ta reda på vad man behöver göra i kodväg måste man först kolla upp hur söksidan funkar, vad den har för krav på parametrar etc. Genom att använda Fiddler, Firebug eller annat verktyg kan man se vad servern skickar till webbläsaren och på så vis får man fram dessa uppgifter.

Kimpo har rätt i att det inte bara är att skapa en request och sedan läsa av responsen. Responsen innehåller en location-header och i den hittar man adressen till sidan men sökresultatet.

Kod:

var request = (HttpWebRequest) WebRequest.Create("http://www.prylbanken.se/search/?so_searchString=xbox");

var response = (HttpWebResponse) request.GetResponse();
var searchResultsUrl = response.Headers[HttpResponseHeader.Location];


dAEk 2011-09-16 23:20

Den andra sidan som du skrev om i PM kan du nämna här så borde dom andra kunna hjälpa dig.

Jag håller på och flyttar så jag vet inte hur mycket tid jag kommer ha över dom närmsta veckorna.


Alla tider är GMT +2. Klockan är nu 01:44.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson