Comment définir X-Api-Clés dans l'en-tête de requête HTTP get
Comment puis-je mettre un x-api-clé avec le apikey dans l'en-tête d'une requête HTTP get. J'ai essayé quelque chose mais il semble que cela ne fonctionne pas.
Voici mon code:
private static String download(String theUrl)
{
try {
URL url = new URL(theUrl);
URLConnection ucon = url.openConnection();
ucon.addRequestProperty("x-api-key", apiKey);
InputStream is = ucon.getInputStream();
BufferedInputStream bis = new BufferedInputStream(is);
ByteArrayBuffer baf = new ByteArrayBuffer(50);
int current;
while ((current = bis.read()) != -1)
{
baf.append((byte) current);
}
return new String (baf.toByteArray());
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return "";
}
EDIT:
Modifié le code avec la réponse ci-dessous, mais toujours un message d'erreur: il ne pouvait pas instancier le type HttpURLConnection(url). J'ai changé, mais maintenant, je dois remplacer les 3 méthodes (ci-dessous)
private static String download(String theUrl)
{
try {
URL url = new URL(theUrl);
URLConnection ucon = new HttpURLConnection(url) {
@Override
public void connect() throws IOException {
//TODO Auto-generated method stub
}
@Override
public boolean usingProxy() {
//TODO Auto-generated method stub
return false;
}
@Override
public void disconnect() {
//TODO Auto-generated method stub
}
};
ucon.addRequestProperty("x-api-key", apiKey);
ucon.connect();
InputStream is = ucon.getInputStream();
BufferedInputStream bis = new BufferedInputStream(is);
ByteArrayBuffer baf = new ByteArrayBuffer(50);
int current;
while ((current = bis.read()) != -1)
{
baf.append((byte) current);
}
return new String (baf.toByteArray());
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return "";
}
OriginalL'auteur Timmeeh93 | 2014-10-24
Vous devez vous connecter pour publier un commentaire.
Au lieu d'utiliser un
URLConnection
, vous devriez être en utilisant unHttpClient
pour faire une demande.Un exemple simple pourrait ressembler à ceci:
J'ai mis à jour ma réponse: vous devriez être en utilisant
HttpURLConnection
, comme URLConnection n'est pas nécessairement l'utilisation de HTTP et de ne pas avoir de mise en œuvre deconnect()
(alors queHttpURLConnection
n').Mais j'obtiens un message d'erreur indiquant qu'il ne pouvait pas instancier le type HttpURLConnection(url). Je vais mettre à jour mon post ci-dessus ce que eclipse est en train de dire que j'ai à faire.
Mes excuses, j'ai oublié
HttpURLConnection
est aussi abstrait. J'ai mis à jour ma réponse avec une meilleure solution qui utilise un réel requête HTTP au lieu de simplement l'URL de connexion.OriginalL'auteur Tanis.7x
L'utilisation d'Apache HttpClient est déconseillé. Vous pouvez le vérifier ici: Android 6.0 Changements
Il est mieux d'utiliser URLConnection et jeté à HttpURLConnection:
OriginalL'auteur juanlugm