Avatar billede stargate Nybegynder
12. juni 2008 - 14:41 Der er 8 kommentarer og
1 løsning

Programmatisk post i C#

Jeg skal omlægge en java app. til C#, og app. laver en post-request, og får et svar tilbage. Jeg har java-koden, men ved ikke lige hvordan man laver det i C#...?

Håber at nogle kan hjælpe mig...

private String logon() {
    try {
        String user = "user";
        String password = "password";
        String adresse = "http://xxx.xx.xx.xxx/yyy";

        // Først laves signon
        String logonrequest =
            "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" standalone=\"yes\"?>"
                + "<root xmlns=\"http://www.xyz.dk\">"
                + "<Gctp v=1>"
                + "<Sik function=\"signon\" userid=\""
                + user
                + "\""
                + " password="
                + "\""
                + password
                + "\""
                + "/>"
                + "</Gctp>"
                + "</root>";

        URL url = new URL(adresse);
        HttpURLConnection con = (HttpURLConnection) url.openConnection();
        con.setRequestMethod("POST");
        con.setDoOutput(true);
        con.setRequestProperty("user-agent", "XXX/1.0");

        sendRequest(con, logonrequest);

        // Modtag svar
        InputStream in = con.getInputStream();

        //gør noget ved svar...

        return kvitKode;

    } catch (Exception e) {
        return "000";
    }
}

private void sendRequest(HttpURLConnection con, String request) {
    try {

        OutputStream out = con.getOutputStream();
        BufferedOutputStream bos = new BufferedOutputStream(out);
        byte[] bytes = request.getBytes();
        bos.write(bytes, 0, bytes.length);
        bos.flush();
    } catch (Exception e) {
    }
}
Avatar billede arne_v Ekspert
12. juni 2008 - 15:03 #1
Det goer du helt paa samme maade.

Klassen hedder (Http)WebRequest i .NET - jeg finder lige et eksempel !
Avatar billede arne_v Ekspert
12. juni 2008 - 15:04 #2
HttpWebRequest req = (HttpWebRequest)WebRequest.Create("http://localhost/select.asp");
            req.Method = "POST";
            req.ContentType = "application/x-www-form-urlencoded";
            StreamWriter post = new StreamWriter(req.GetRequestStream());
            post.Write("max=" + maxval);
            post.Close();
            HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
            StreamReader sr = new StreamReader(resp.GetResponseStream());
Avatar billede arne_v Ekspert
12. juni 2008 - 15:08 #3
Du skal jo saa poste noget text/xml og ikke application/x-www-form-urlencoded, men
logikken er helt den samme.
Avatar billede stargate Nybegynder
12. juni 2008 - 15:43 #4
Ovenst. kan jeg faktisk godt få til at virke, men...
Jeg har brug for at få response i text/xml - format, som fx.:

HTTP/1.1 200 OK¿
Pragma: no-cache¿
Date:Mon, 21 Mar 2002 15:31:31 GMT¿
Content-Length:2443¿
Content-Type: text/xml ¿
Expires: Mon, 21 Mar 2002 00:00:02 GMT¿
¿
Her følger så de ovennævnte 2443 byte data i XML-format
Avatar billede arne_v Ekspert
12. juni 2008 - 16:12 #5
sr.ReadToEnd()

vil laese hele response body ind i en string som ligger lige til XmlDocument LoadXml
Avatar billede stargate Nybegynder
13. juni 2008 - 14:44 #6
Fantastisk, det spiller  :o)
Jeg har behov for at tilføje 2 requestproperties á la java:
    con.setRequestProperty("user-agent", "XXX/1.0");
    con.setRequestProperty("Cookie", tokenString);

user-agent kan jeg sætte med:
    req.UserAgent = "XXX/1.0";

Men hvad med "Cookie", ved du også det...?
Formuler under alle omstændigheder som et svar, så du kan få point  :o)
Avatar billede arne_v Ekspert
13. juni 2008 - 15:06 #7
generelt kan man:

req.Headers.Add("fooo", "bar");

men maaske skal du:

req.CookieContainer = new CookieContainer();
req.CookieContainer.Add(new Cookie(nam, val));
Avatar billede arne_v Ekspert
13. juni 2008 - 15:06 #8
Og et svar
Avatar billede stargate Nybegynder
13. juni 2008 - 15:36 #9
req.Headers.Add() virkede...

Takker for stor hjælp...
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