Avatar billede mini-me Nybegynder
30. juni 2007 - 20:11 Der er 22 kommentarer og
1 løsning

POST til anden server

Hej,

Jeg skal lave et post til en anden server, dette er der normalt ikke noget specielt i.

Jeg kan snildt få det til at fungerere ved at bruge flg:

<form method="post" action="posttilurl.dk" enctype="multipart/form-data" name="postIT">
   
    <input name='Media' type='hidden' value='0'>
    <input maxlength='90' name='Navn' size='40' type='text' value='<% = request.Form("dataFil") %>'>
    <input type="file" name="Data" />
</form>


Men problemet er så at brugeren ikke selv skal vælge den fil via "browse" jeg har stien osv. men kan ikke benytte "value" til at sætte værdien for "Data"-feltet. Og ændre jeg file til et text-felt så bliver den fil jeg poster ikke medsendt.

Jeg har forsøgt mig med ASP http POST component fra serverobjects, uden held. Jeg mangler at kunne definere en værdi for "file"...

nogen der kan hjælpe?
Avatar billede mini-me Nybegynder
30. juni 2007 - 20:11 #1
evt. en .net løsning
Avatar billede thesurfer Nybegynder
30. juni 2007 - 20:15 #2
ASP har ikke noget med .Net at gøre.

Her er en mulig løsning fra http://www.motobit.com/tips/detpg_post-binary-data-url/ :

    These three objects has almost the same OLE interface, so you can use the same source code: 'sends multipart/form-data To the URL using WinHttprequest/XMLHTTP
'FormData - binary (VT_UI1 | VT_ARRAY) multipart form data
Function WinHTTPPostRequest(URL, FormData, Boundary)
  Dim http 'As New MSXML2.XMLHTTP
 
  'Create XMLHTTP/ServerXMLHTTP/WinHttprequest object
  'You can use any of these three objects.
  Set http = CreateObject("WinHttp.WinHttprequest.5")
  'Set http = CreateObject("MSXML2.XMLHTTP")
  'Set http = CreateObject("MSXML2.ServerXMLHTTP")
 
  'Open URL As POST request
  http.Open "POST", URL, False
 
  'Set Content-Type header
  http.setRequestHeader "Content-Type", "multipart/form-data; boundary=" + Boundary
 
  'Send the form data To URL As POST binary request
  http.send FormData
 
  'Get a result of the script which has received upload
  WinHTTPPostRequest = http.responseText
End Function


Læg mærke til, at du kan bruge disse 3 komponenter:

  Set http = CreateObject("WinHttp.WinHttprequest.5")
  'Set http = CreateObject("MSXML2.XMLHTTP")
  'Set http = CreateObject("MSXML2.ServerXMLHTTP")

Vælg en af dem, og test.

Jeg går ud fra, at du ved at '-tegnet betyder at linien er kommenteret ud, og ikke bliver afviklet..
Avatar billede mini-me Nybegynder
30. juni 2007 - 20:22 #3
Kan du give et eksempel på hvordan et kald til dne funktion skal se ud?
Avatar billede erikjacobsen Ekspert
30. juni 2007 - 20:23 #4
"brugeren ikke selv skal vælge den fil via "browse" " ??? Du kan ikke hente en fil fra en brugers PC via en form-upload, på anden måde end at brugeren netop vælger den med "browse"      (eller installerer og godkender et program af en slags)

Mon ikke det har noget med sikkerhed at gøre...
Avatar billede mini-me Nybegynder
30. juni 2007 - 20:32 #5
Erik, det har du ret i, men den fil der skal postes ligger på server01 og som så skal sendes til server02.

Thesurfer har fat i noget af det rigtige, men kan ikke lige se hvordan det skal se ud i praksis
Avatar billede erikjacobsen Ekspert
30. juni 2007 - 20:34 #6
Så kan det selvfølgelig lade sig gøre (uden min hjælp i ASP, ren wombat...)
Avatar billede thesurfer Nybegynder
30. juni 2007 - 23:55 #7
mini-me> Jeg har søgt lidt på nettet, og er kommet frem til følgende:

url: adressen der skal sendes til, f.eks. http://www.server02.dk
formdata: evt input-feltet i formen, f.eks "fornavn=hans&efternavn=hansen"
boundary: en delimiter/skille-tegn til gruppering, der fortæller modtager-serveren, hvor data skal skilles

Ud fra de oplysninger, vil jeg sige at dit kald kan være:

dim SvarFraServer
SvarFraServer = WinHTTPPostRequest("http://www.server02.dk", "", "hokuspokus")

Jeg ved ikke helt hvad SvarFraServer kommer til at indeholde, men jeg vil tro at det kommer til at indeholde noget, der indikerer som alt gik godt eller skidt.
Det kan være i form af en kode, som f.eks. kode 200 (alt er ok), eller en anden kode, der ikke er 200, hvilket betyder at der skete en fejl.


Med den beskrivelse du kom kom med, vil jeg gætte på, at man vælger et eller andet punkt, f.eks. fra en selectbox/dropdownbox, hvor den så automatisk sender en eller anden bestemt fil fra server01, til server02.

Hvis det ikke er sådan det virker, må du meget gerne forklare det nærmere.. :-)
Avatar billede thesurfer Nybegynder
30. juni 2007 - 23:57 #8
Rettelse:

Rettelsen er:
"--hokuspokus" & vbCrLf

boundary skal vist starte med "--", og der skal vist være et linieskift efter selv nøgleordet..

Man vælger åbenbart et tilfældig nøgleord, som skal bruges ved samtlige tilføjelser til headeren..


mini-me> Jeg har søgt lidt på nettet, og er kommet frem til følgende:

url: adressen der skal sendes til, f.eks. http://www.server02.dk
formdata: evt input-feltet i formen, f.eks "fornavn=hans&efternavn=hansen"
boundary: en delimiter/skille-tegn til gruppering, der fortæller modtager-serveren, hvor data skal skilles

Ud fra de oplysninger, vil jeg sige at dit kald kan være:

dim SvarFraServer
SvarFraServer = WinHTTPPostRequest("http://www.server02.dk", "", "--hokuspokus" & vbCrLf)

Jeg ved ikke helt hvad SvarFraServer kommer til at indeholde, men jeg vil tro at det kommer til at indeholde noget, der indikerer som alt gik godt eller skidt.
Det kan være i form af en kode, som f.eks. kode 200 (alt er ok), eller en anden kode, der ikke er 200, hvilket betyder at der skete en fejl.


Med den beskrivelse du kom kom med, vil jeg gætte på, at man vælger et eller andet punkt, f.eks. fra en selectbox/dropdownbox, hvor den så automatisk sender en eller anden bestemt fil fra server01, til server02.

Hvis det ikke er sådan det virker, må du meget gerne forklare det nærmere.. :-)
Avatar billede thesurfer Nybegynder
01. juli 2007 - 00:10 #9
Jeg har lige kigge på http://www.15seconds.com/issue/990723.htm :

Ifølge den side, vil headeren se sådan ud:

-----------------------------7cf28c330254 Content-Disposition: form-data;
name="txtAuthor" Sander Duivestein -----------------------------7cf28c330254 Content-
Disposition: form-data; name="txtFileName"; filename="C:\Download\Warp11.txt"
Content-Type: text/plain Warp11 builds state-of-the-art applications at the speed of light.
-----------------------------7cf28c330254

Hvis man brugte nøgleordet "-----------------------------7cf28c330254" sammen med denne form:

<FORM NAME="frmUpload" METHOD="Post" ENCTYPE="multipart/form-data" ACTION="Upload.asp"> <TABLE>
<TR><TD>Author</TD><TD><INPUT TYPE="text" NAME="txtAuthor"></TD></TR>
<TR><TD>File</TD><TD><INPUT TYPE="file" NAME="txtFileName"></TD></TR>
<TR><TD COLSPAN="2" ALIGN="right"><INPUT TYPE="Submit" VALUE="Upload"></TD></TR>
</TABLE>
</FORM>

Og valgte:
- i txtAuthor: Sander Duivestein
- i txtFileName: C:\Download\Warp11.txt


Hvis man så splitter strenge op ved "-----------------------------7cf28c330254", får man dette:


index 0: (tom da der ikke står noget før det første nøgleord)

index 1:
Content-Disposition: form-data; name="txtAuthor" Sander Duivestein

index 2:
Content-Disposition: form-data; name="txtFileName"; filename="C:\Download\Warp11.txt"
Content-Type: text/plain Warp11 builds state-of-the-art applications at the speed of light.

index 3: (tom da der ikke står noget efter det sidste nøgleord)
Avatar billede thesurfer Nybegynder
01. juli 2007 - 00:16 #10
Jeg har lige kigget på "Browser-based File Uploading Under the Microscope" ( http://www.15seconds.com/issue/981121.htm )..

Det ser ud til, at der automatisk bliver genereret et tilfældigt (eller sessionsbaseret) nøgleord, hvis man ikke sender noget med..

Så måske kan man kalde funktionen på en af disse måder:

1)
dim SvarFraServer
SvarFraServer = WinHTTPPostRequest("http://www.server02.dk", "", "")

2)
dim SvarFraServer
SvarFraServer = WinHTTPPostRequest("http://www.server02.dk", "", null)

3)
dim SvarFraServer
SvarFraServer = WinHTTPPostRequest("http://www.server02.dk", "", nothing)
Avatar billede mini-me Nybegynder
02. juli 2007 - 12:06 #11
Okay, det blive lige rent sort snak for mig :)

Der er en rettelse til det jeg siger, for selve filen ligger aldrig på klientens computer men på server01 og skal sendes til server02. sammen med nogle informationer.
Avatar billede mini-me Nybegynder
02. juli 2007 - 12:13 #12
Altså:

Jeg skal bygge et multipart-request som skal sendes til server02

Fremgangsmåde:

en klient går ind på www.server01.dk/index.html udfylder 4 felter og klikker på godkend.

Nu skal server01 så ud fra 2 af felterne lave en zip-fil,(det virker) denne zip fil skal så sammen med værdierne fra de 2 sidste felter sendes til server02. Som et multipart-request.

I need som help building this ;-)
Avatar billede thesurfer Nybegynder
02. juli 2007 - 21:37 #13
Har du prøvet 30/06-2007 20:15:56?
Avatar billede mini-me Nybegynder
03. juli 2007 - 09:47 #14
Hej,

Jeg mangler et eksempel som viser hvordan den funktion skal bruges...
Avatar billede thesurfer Nybegynder
07. juli 2007 - 23:05 #15
Jeg ser lige, om jeg kan lave et eksempel i morgen..
Hvis jeg ikke skriver noget i morgen, skriv lige et indlæg, så jeg får en mail angående dette spørgsmål..
Avatar billede mini-me Nybegynder
08. juli 2007 - 15:24 #16
besked :-)
Avatar billede mini-me Nybegynder
09. juli 2007 - 14:35 #17
TheSurfer, er du nået videre med dette? :)
Avatar billede thesurfer Nybegynder
09. juli 2007 - 22:48 #18
Jeg fik din "besked :-)", men har desværre ikke fået kigget på det..

Jeg håber på at få kigget på det, i morgen inden jeg smutter på arbejde, eller engang når jeg kommer hjem fra arbejde.

Jeg er selv interesseret i idéen, og ser frem til en løsning.. :-)
Avatar billede thesurfer Nybegynder
10. juli 2007 - 23:13 #19
Jeg har desværre stadig ikke fået kigget på det, og kan heller ikke sige hvornår jeg får kigget på det.

Derfor kan jeg ikke give dig en tidsfrist..

Du er velkommen til at lade spørgsmål stå åbent, eller lukke det og prøve lykken igen.

Jeg håber på at finde en løsning, på et eller andet tidspunkt, selvom det er efter at spørgsmålet er lukket..
Avatar billede mini-me Nybegynder
11. juli 2007 - 00:09 #20
Jeg lader den lige stå åben, prøver evt. selv lige at se mere på det kode du har sendt og se om jeg kan sætte mig ind i det.
Avatar billede thesurfer Nybegynder
10. september 2007 - 16:58 #21
Jeg har sådan set droppet projektet.
Avatar billede mini-me Nybegynder
27. september 2007 - 00:24 #22
Jeg omformulere lige spørgsmålet en smule:

Hvis jeg nu har en fil på en server som jeg vil poste til en anden server, det burde jeg vel kunne gøre i form af et eller andet komponent? Er der nogen der kan bringe mig lidt nærmere?
Avatar billede mini-me Nybegynder
27. februar 2008 - 15:21 #23
The-sufer: Problemet blev aldrig løst, men tak for hjælpen.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

Seneste spørgsmål Seneste aktivitet
30 min siden Tomt felt i Start Af ErikHg i Windows
I går 23:00 Hyperlink til tekst Af Nanarsi i Excel
18/0121:03 Forlænge ringetid Af 1Dorte i Apps til Android
17/0117:38 Video ikoner Af Malm i Windows
17/0117:27 Video ikoner Af logbuilders i Windows