Avatar billede websphere Nybegynder
25. april 2001 - 15:19 Der er 10 kommentarer og
1 løsning

Post til HTTPs fra Servlet

Hejsa,

Hvordan laver jeg en \"post\" fra en servlet til en anden server? og hvordan samler jeg svaret.

Spørg hvis der er noget i mangler

//MG
Avatar billede disky Nybegynder
25. april 2001 - 15:22 #1
beskriv dit spørgsmål lidt bedre

en POST er noget man gør fra en html Form ikke en servlet.

Hvad er det du gerne vil ?
Avatar billede websphere Nybegynder
25. april 2001 - 15:26 #2
Jeg vil gerne sende noget der minder om enHTML post fra min servlet til en HTTPs adresse.

Og så vil jeg gerne få mit svar ind via InputStream eller sådan noget.
Avatar billede disky Nybegynder
25. april 2001 - 15:28 #3
hmmm,

jeg vil tro du kan lave det via at din ene servlet leger browser.

Altså sætter content type, method osv. ligesom en browser ville gøre det.

Og den kalder så din anden servlet som behandler det som var det fra en browser.
Avatar billede websphere Nybegynder
25. april 2001 - 15:36 #4
Noget i denne stil:

URL url = new URL(urlString);
String qry = URLEncoder.encode(fieldName) + \"=\" + URLEncoder.encode(query);
URLConnection uc = url.openConnection();

uc.setDoOutput(true);
uc.setDoInput(true);
uc.setUseCaches(false);
uc.setRequestProperty(\"Content-type\", \"application/x-www-form-urlencoded\");
Avatar billede websphere Nybegynder
25. april 2001 - 15:37 #5
Jeg har bare haft problemer når jeg prøver at kontakte en HTTPS host på denne måde??
Avatar billede disky Nybegynder
25. april 2001 - 15:38 #6
ja f.eks. på den måde.

Kræver en https ikke en form for certifikat ?
Avatar billede websphere Nybegynder
25. april 2001 - 15:46 #7
Det er slet ikke umuligt, men jeg ved det ikke.

Det kan godt være jeg bare skal gå igang med at terpe de rigtige API\'er :o)
Avatar billede disky Nybegynder
25. april 2001 - 15:49 #8
det plejer at hjælpe mig i den slags situationer :)
Avatar billede kama Nybegynder
25. april 2001 - 16:00 #9
Nedenstående test-prog. tror jeg du kan bruge.
/kama

import java.io.*;
import java.net.*;
import java.util.*;

public class PostTest
{  public static void main(String[] args)
    {  try
        { 
            Properties props = new Properties();

            URL url = new URL(\"http://www.census.gov/cgi-bin/ipc/idbsprd\");
            props.setProperty(\"tbl\", \"001\");
            props.setProperty(\"cty\", \"DA\");
            props.setProperty(\"optyr\",\"latest checked\");

            String r = doPost(url, props);
            System.out.println(r);   
        }
        catch (IOException exception)
        {  System.out.println(\"Error: \" + exception);
        }
    }

    public static String doPost(URL url, Properties nameValuePairs) throws IOException
    {
        URLConnection connection = url.openConnection();
        connection.setDoOutput(true);

        PrintWriter out    = new PrintWriter(connection.getOutputStream());

        Enumeration enum = nameValuePairs.keys();

        while (enum.hasMoreElements())
        {
            String name = (String)enum.nextElement();
            String value = nameValuePairs.getProperty(name);
            char ch;
            if (enum.hasMoreElements()) ch = \'&\'; else ch = \'\\n\';
            out.print(name + \"=\" + URLEncoder.encode(value) + ch);
        }

        out.close();

        BufferedReader in;
        try
        {  in = new BufferedReader(new
                InputStreamReader(connection.getInputStream()));
        }
        catch (FileNotFoundException exception)
        {  InputStream err
            = ((HttpURLConnection)connection).getErrorStream();
            if (err == null) throw exception;
            in = new BufferedReader(new InputStreamReader(err));
        }
        StringBuffer response = new StringBuffer();
        String line;

        while ((line = in.readLine()) != null)
            response.append(line + \"\\n\");

        in.close();
        return response.toString();
    }
}
Avatar billede disky Nybegynder
25. april 2001 - 16:05 #10
Den servlet svarer jo bare hvis den form kalder den via en POST.

Var spørgsmålet ikke om hvordan en servlet kalder en anden servlet med en POST ?
Avatar billede kama Nybegynder
25. april 2001 - 20:01 #11
Jeg overså, at det var HTTPS.
Du skal derfor huske disse to linier:

System.getProperties().put(\"java.protocol.handler.pkgs\",\"com.sun.net.ssl.internal.www.protocol\");

Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
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