# CURL requests in Java



## Nookie (14. Okt 2014)

Hallo zusammen

Ich versuche mich gerade an folgender Schnittstelle:
amagno API reference

Die Kommunikation erfolgt weitgehend über HTTP (GET und POST)

Wenn ich direkt über CURL folgenden request absetze:

```
curl http://user.name%40gmx.ch:password@amagno1/amagnome/api/content/search?searchstring=%221%22&limit=1
```

erhalte ich das gewünschte Ergebnis, wenn ich die selbe abfrage jedoch im Browser mache erhalte ich ein 403? Warum?
Das selbe leider auch in Java:


```
public boolean isWorking(){
		
		
		URL url = null;
		try {
			url = new URL("http://user.name%40gmx.ch:password@amagno1/amagnome/api/content/search?searchstring=%221%22&limit=1");
		} catch (MalformedURLException e1) {}
		
		BufferedReader reader = null;


		    try {
				reader = new BufferedReader(new InputStreamReader(url.openStream(), "UTF-8"));
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}

		return false;
	}
```

Weiss wohl jemand rat?


----------



## Joose (14. Okt 2014)

Nookie hat gesagt.:


> ```
> curl http://user.name%40gmx.ch:password@amagno1/amagnome/api/content/search?searchstring=%221%22&limit=1
> ```



CURL kann das vielleicht verstehen.
Java und dein Browser aber nicht da es sich hier um keine valide URL handelt!


----------



## Nookie (14. Okt 2014)

Wie meinst du das?
Warum sollte diese URL nicht valide sein?


----------



## Joose (14. Okt 2014)

Entschuldigung mein Denkfehler


----------



## Nookie (15. Okt 2014)

Hat sonst noch jemand eine Vorschlag?
Ich komme leider noch immer nicht weiter.


----------



## Thallius (15. Okt 2014)

Ich bin da auch kein Experte aber bei curl gibt man user und paswort anders ein als über eine URL beim Browser.

Wenn mich nicht alles täuscht, dann wird glaube ich user und paswort in deinem link als POST an die URL übergeben.
Du müßtest zumächst einmal die richtige URL ermitteln die muss dann wohl irgenwie wie

"http://www.amagno.ch/amagnome/api/content/search?searchstring=%221%22&limit=1"

oder so ähnlich heissen und an die müßtest du dann einen POST Request mit Username und Passwort schicken.

Eventuell geht es auch über username und passwort in der URL. Das müßte beim Browser dann aber irgendwie so aussehen

"http://www.amago.ch:username=asswort="

Ist aber nur so eine Idee.

Gruß

Claus


----------



## dzim (16. Okt 2014)

Muss man das in dem Fall nicht in den Header einbauen? "Basic-Auth" und dann die Authentication als Base64-encodierter String aus *<user>:<passwd>*?
Oder verwende einfach eine Bibliothek wie ApacheHttpClient oder OkHttp und setze dort die Header-Informationen, bevor du den GET-Request absetzt.


----------

