Avatar billede ctnn Nybegynder
28. december 2006 - 12:55 Der er 17 kommentarer og
1 løsning

submitte html form fra Applikation giver HTTP fejl 400

Nu har jeg siddet og tygget længe på denne her. Jeg får konstant en fejl når jeg forsøger at sende til en af mine servere.

den originale form til at sende denne her fil til hed sådan her.

<html>
<head>
<title>Simple form for pushing a feed</title>
</head>
<body>
<h3>Simple form for pushing a feed</h3>>
<form enctype="multipart/form-data" method=POST action="http://swapgoogle.sogg.dk:19900/xmlfeed">
Name of datasource:
<input type="text" name="datasource">
<br>
(No spaces or non alphanumeric characters)
<br><br>
Type of feed: 
<input type="radio" name="feedtype" value="full" checked>
Full
<input type="radio" name="feedtype" value="incremental">
Incremental
<br><br>
XML file to push: 
<input type="file" name="data">
<br><br>
<input type="submit" value=">Submit<">
</form>
</body>
</html>

Jeg forsøger så at afsende min fil via følgende

WebClient myWebClient = new WebClient();

byte[] responseArray = myWebClient.UploadFile("http://swapgoogle.sogg.dk:19900/xmlfeed?datasource=UNICORN5&feedtype=full",fileName);

Jeg får kastet en fejl 400 fra serveren hver eneste gang.

Jeg har så forsøgt mig med følgende kode.



HttpWebRequest req = (HttpWebRequest)WebRequest.Create("http://swapgoogle.sogg.dk:19900/xmlfeed");
            req.Method = "POST";
            req.ContentType = "multipart/form-data";
            StreamWriter post = new StreamWriter(req.GetRequestStream());
            post.Write("datasource=value1&feedtype=full");
            post.Close();
            HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
            Stream stm = resp.GetResponseStream();
            int c;
            string res = "";
            while((c = stm.ReadByte()) >= 0)
            {
                res += (char)c;
            }
            stm.Close();
            resp.Close();
            Console.WriteLine(res);


Men det samme output en fejl 400, er der nogen der kan fortælle mig hvad jeg gør galt??
Avatar billede kalp Novice
28. december 2006 - 13:01 #1
prøv at tilføje.. og selvfølgelig indtaste brugernavn og password

WebClient myWebClient = new WebClient();
myWebClient .Credentials = new NetworkCredential("brugernavn","password");
Avatar billede kalp Novice
28. december 2006 - 13:02 #2
men ellers... tryk på play knappen når du starter den for så burde din debugger jo aktiveres og fortælle om fejlen
Avatar billede ctnn Nybegynder
28. december 2006 - 13:12 #3
Jeg forsøgte at give den nogle networkcredentials men fik stadig denne her ud af det

The remote server returned an error: (400) Bad Request.

Jeg er stadig ikke helt med hvorfor at det er et problem, må ærligt erkende at jeg ikke kan se hvad der er galt.
Avatar billede kalp Novice
28. december 2006 - 13:20 #4
måske har du ikke skrive rettigheder på serveren.. er ASP.NET konto'en blevet givet rettigheder på serveren?

Du højreklikker på server mappen.. vælger egenskaber.. sikkerhed.. add og tilføjer

ASP.NET

men igen... du skal debugge for at vi kan få en rigtig fejl
Avatar billede kalp Novice
28. december 2006 - 13:25 #5
hvis ikke det har noget med sikkerhed at gøre tror jeg desuden det er pga. dette den brokker sig..

http://swapgoogle.sogg.dk:19900/xmlfeed?datasource=UNICORN5&feedtype=full

kender ikke reglerne omkring det.. om der kan stå http eller om der skal stå ftp f.eks.
Avatar billede kalp Novice
28. december 2006 - 13:27 #6
sidst men ikke mindst kan du kigge på dette script..

<%@ Import Namespace="System"%>
<%@ Import Namespace="System.IO"%>
<%@ Import Namespace="System.Net"%>
<%@ Import NameSpace="System.Web"%>

<Script language="C#" runat=server>
void Page_Load(object sender, EventArgs e) {
   
    foreach(string f in Request.Files.AllKeys) {
        HttpPostedFile file = Request.Files[f];
        file.SaveAs("c:\\inetpub\\test\\UploadedFiles\\" + file.FileName);
    }   
}

</Script>
<html>
<body>
<p> Upload complete.  </p>
</body>
</html>
Avatar billede ctnn Nybegynder
28. december 2006 - 13:29 #7
;) vil du ha dissassembly.

Jeg er ikke helt klar over hvad det er for noget debug du vil have fat i.

Det er hvad jeg får smidt ud i mit output Window

an unhandled exception of type 'System.Net.WebException' occurred in system.dll

Additional information: The remote server returned an error: (400) Bad Request.

Jeg har benyttet den anden form, og den virker fint, på trods af at den ligger på en helt tredje server.

SErveren som skal modtage filen er en apache webserver, har det noget at skulle ha sagt? Benytter webclient sig ikke af basal HTTP protokol?
Avatar billede ctnn Nybegynder
28. december 2006 - 13:30 #8
AH ;) jeg sidder inde i en C# consoleapplication.
Avatar billede ctnn Nybegynder
28. december 2006 - 13:31 #9
Det jeg kan blive i tvivl om, er hvorvidt at jeg skal beskrive portnummeret et andet sted end i URI'en, men jeg kan da ikke lige greje hvor det så skulle være.
Avatar billede kalp Novice
28. december 2006 - 13:35 #10
Den der fejl 400 er når serveren ikke kan forstå det du requester... og det er

http://swapgoogle.sogg.dk:19900/xmlfeed?datasource=UNICORN5&feedtype=full

ved ikke hvad det er, men det er nok den du skal kigge på
Avatar billede arne_v Ekspert
28. december 2006 - 15:15 #11
jeg gaetter paa at WebClient UploadFile sender en PUT og ikke en POST og at din server
ikke forstaar PUT

din WebRequest med POST sender jo slet ikke filen

her er et eksempel paa en WebRequest POST med baade en tekst streng og en fil:

    public static void upload(string url, string description, string filename)
    {
        ServicePointManager.Expect100Continue = false; // to avoid .NET - Tomcat 5 bug
        HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
        req.Method = "POST";
        req.KeepAlive = false;
        req.ContentType = "multipart/form-data; boundary=" + BOUNDARY;
        StreamWriter post = new StreamWriter(req.GetRequestStream());
        post.WriteLine("--" + BOUNDARY);
        post.WriteLine("Content-Disposition: form-data; name=\"beskrivelse\"");
        post.WriteLine("");
        post.WriteLine(description);
        post.WriteLine("--" + BOUNDARY);
        post.WriteLine("Content-Disposition: form-data; name=\"fil\"; filename=\"" + filename + "\"");
        //post.WriteLine("Content-Type: text/plain");
        post.WriteLine("Content-type: application/octet-stream");
        post.WriteLine("Content-Transfer-Encoding: binary");
        post.WriteLine("");
        post.Flush();
        Stream binf = new FileStream(filename, FileMode.Open);
        int c;
        while((c = binf.ReadByte()) >= 0) {
            post.BaseStream.WriteByte((byte)c);
        }
        binf.Close();
        post.BaseStream.Flush();
        post.WriteLine("--" + BOUNDARY + "--");
        post.Close();
        HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
        Console.WriteLine(resp.StatusCode);
        resp.Close();
    }
Avatar billede ctnn Nybegynder
28. december 2006 - 15:24 #12
Hmmm ser rigtigt spændende ud Arne, men hvor definerer du BOUNDARY?
Avatar billede arne_v Ekspert
28. december 2006 - 15:27 #13
det er bare en tilfaeldig streng

jeg har brugt:

    private const string BOUNDARY = "ArneArne";
Avatar billede ctnn Nybegynder
28. december 2006 - 15:30 #14
Damn damn, stadig den samme irriterende fejl, error 400 bad request. Jeg har fået denne her stump "request" fra dem der leverer den server som skal fortolke requesten.

POST /xmlfeed HTTP/1.0
Content-type: multipart/form-data
Content-length: 855
Host: myserver.domain.com:19900
User-agent: Python-urllib/1.15
feedtype=full&datasource=sample&data=%3C%3Fxml+version%3D%221.0%22+encoding%3D%22ISO-8859-1

Det siger desværre ikke mig det store, nogle som kan komme med noget mere om hvor og hvad mit problem kunne være?
Avatar billede arne_v Ekspert
28. december 2006 - 15:35 #15
det siger mig noget, men den ser skummel ud:
  - den siger multipart men det er ikke en multipart
  - og der mangler en tom linie mellem headere og body
Avatar billede arne_v Ekspert
17. marts 2007 - 03:11 #16
kommet videre ?
Avatar billede ctnn Nybegynder
19. marts 2007 - 08:28 #17
Overhovedet ikke, jeg har desværre nedprioriteret den lidt, har desværre en del andre projekter, som påkalder sig min tid :(
Avatar billede ctnn Nybegynder
06. juni 2007 - 18:10 #18
Nej desværre er jeg ikke kommet videre, men nu har jeg pudset Google selv på den.
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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