2017-05-22 1 views
0

Ich muss Inhalte von der Webanwendungsoberfläche von Drittanbietern abrufen, aber nach der Anmeldung leitet die Website auf viele Seiten um. Ich verstehe nicht, wie man Daten von der zuletzt geöffneten Seite abruft.Der Server hat den HTTP-Antwortcode zurückgegeben: 405

Derzeit erhalte ich in.readLine() -Methode gibt null zurück, wenn ich "OPTIONS" anstelle von GET verwende. Wenn ich GET benutze dann Fehler 405. Rest Client zeigt den Verbindungserfolg durch GET Methode und leitet es auch auf die gewünschte Seite um.

Bitte vorschlagen.

I verbunden durch URLConnection ist mit url

HttpsURLConnection con = (HttpsURLConnection) new URL("https://***.com/MRcgi/MRhomepage.pl" + "?" + query).openConnection(); 

Complete code is as follows- 

      String charset = "UTF-8"; // Or in Java 7 and later, use the constant: 

    String USER = "*****"; 
    String PROJECTID = "1"; 
    String MRP = "1eba539717f66151f557b49fd7e8a8d28";//dynamically changes 
    String OPTION = "none"; 
    String WRITECACHE = "1"; 
    String FIRST_TIME_IN_FP = "1"; 
    String FIRST_TIME_IN_PROJ = "1"; 
    String dispatch_script = "MRlogin.pl"; 


    String query = String 
      .format("USER=%s&PROJECTID=%s&MRP=%s&OPTION=%s&WRITECACHE=%s&FIRST_TIME_IN_FP=%s&FIRST_TIME_IN_PROJ=%s&dispatch_script=%s&", 
        URLEncoder.encode(USER, charset), 
        URLEncoder.encode(PROJECTID, charset), 
        URLEncoder.encode(MRP, charset), 
        URLEncoder.encode(OPTION, charset), 
        URLEncoder.encode(WRITECACHE, charset), 
        URLEncoder.encode(FIRST_TIME_IN_FP, charset), 
        URLEncoder.encode(FIRST_TIME_IN_PROJ, charset), 
        URLEncoder.encode(dispatch_script, charset)); 

    HttpsURLConnection con = (HttpsURLConnection) new URL(
      "https://***com/MRcgi/MRhomepage.pl" + "?" + query) 
      .openConnection(); 


    String userPassword = "domain\\user:password"; 

    String encoding = new String(
      org.apache.commons.codec.binary.Base64 
        .encodeBase64(org.apache.commons.codec.binary.StringUtils 
          .getBytesUtf8(userPassword))); 
    System.out.println("----" + encoding); 


    con.setRequestMethod("GET"); 
    con.setRequestProperty("Content-Type", "text/plain"); 
    con.setRequestProperty("charset", "UTF-8"); 
      con.setRequestProperty("Authorization", "Basic " + encoding); 

    USER=user&MRP=15c6ca083c2f75a73e0fbbd2832290f29&PROJECTID=1&USECACHEURL=1&IGNORE_REAL_ACTIVE_TIME=1"; 

    con.setDoOutput(true); 
    DataOutputStream wr = new DataOutputStream(con.getOutputStream()); 
    //wr.writeBytes(urlParameters); 
    wr.flush(); 
    wr.close(); 

    int responseCode = con.getResponseCode(); 
    System.out.println("Response Code : " + responseCode); 

    BufferedReader in = new BufferedReader(new InputStreamReader(
      con.getInputStream())); 
    String inputLine; 
    StringBuffer response = new StringBuffer(); 
    System.out.println("-----" + in.readLine()); 
    while ((inputLine = in.readLine()) != null) { 
     response.append(inputLine); 
    } 
    in.close(); 

    System.out.println(response.toString()); 

} 
+1

https: //developer.mozilla. org/de-DE/docs/Web/HTTP/Status/405 – Tschallacka

+0

Es scheint, dass Ihr Server die OPTIONS-Methode –

+0

nicht unterstützt Ja, aber ich möchte, dass es für die GET-Methode funktioniert, aber keinen Erfolg erzielt. Bitte schlagen Sie vor, wie es funktioniert. – Raz

Antwort

0

setDoOutput (true) für POST verwendet und Anfragen PUT. Wenn es falsch ist, dann ist es für die Verwendung von GET-Anfragen. Es ist nicht in meinem Code erforderlich, so dass ich einfach setDoOutput (true) kommentiert und Wunsch ging GET als

Auch unter url mich it- sehr geholfen beim Verständnis What exactly does URLConnection.setDoOutput() affect?

Verwandte Themen