# 403 error bei POST request



## Jim (9. Sep 2008)

Hi,

ich bekomme als Fehlermeldung folgendes: 
	
	
	
	





```
java.io.IOException: Server returned HTTP response code: 403 for URL: [url]http://3dl.am:80[/url]
```

Wenn ich das ganze mit einem Browser mache kann die Seite ganz normal angezeigt werden....

code ist folgender:

```
try {
        
        String data = URLEncoder.encode("suchtext", "UTF-8") + "=" + URLEncoder.encode("test", "UTF-8");
    
        URL url = new URL("http://www.meineseite.de:80");
        URLConnection conn = url.openConnection();
        conn.setDoOutput(true);
        OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
        wr.write(data);
        wr.flush();
    
        BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
        String result="";
        String line;
        while ((line = rd.readLine()) != null) { 
           result=result + line;
        }
        wr.close();
        rd.close();

result = result.replaceAll(">", "");
System.out.print(result);

} catch (Exception e)
{ e.printStackTrace(); }
```

Kennt jemand eine Lösung für mein Problem?

Danke im Vorraus


----------



## Murray (9. Sep 2008)

Seltsam: die URL im Code ist eine andere als in der Fehlermeldung. 
//EDIT: mittlerweile als nicht zutreffend erwiesenen Vermutungen entfernt


----------



## Murray (10. Sep 2008)

So, ich habe das gerade mal ausprobiert - der gepostete Code kann durchaus zu der Fehlermeldung (natürlich mit einer anderen URL führen). Und zwar dann, wenn der Server der Meinung ist, dass der Client (nicht der durch irgendeine Authentifizierung ausgewiesene Benutzer) nicht berechtigt ist, eine fachlich korrekte Antwort auf den Request zu erhalten.



			
				RFC 2616 hat gesagt.:
			
		

> 10.4.4 403 Forbidden
> The server understood the request, but is refusing to fulfill it.
> Authorization will not help and the request SHOULD NOT be repeated.
> If the request method was not HEAD and the server wishes to make
> ...



Das kann z.B. daran liegen, dass der Server das User-Agent-Feld im Header auswertet und nur bestimmte Werte zulässt.


----------



## kleiner_held (10. Sep 2008)

Wenn es am User-Agent-Feld liegt kann man sich auch einfach als anderer Browser (z.B.: als Mozilla Firefox) ausgeben, dazu sollte man aber ein passendes Java HTTP Client Framework verwenden.
Ein Beispiel dazu hatte ich mal in diesem Thread gepostet.
Ansonsten kann es auch an anderen Header Feldern liegen, im Zweifelsfall hilft nur ausprobieren. Fuer Firefox gibt es zum Beispiel das AdOn _Live HTTP Headers_, wenn also die Anfrage mit Firefox funktioniert, kannst du einfach den kompletten HTTP Request inclussive aller Header Felder mit dem AdOn auslesen und in Java nachbilden.


----------

