Beim anonymen Hochladen eines Dateiobjekts zur Imgur API (JSON) wird der Authentifizierungsfehler 401 ausgegeben

Ich habe eine Klasse erstelltUploadToImgurTask Als AsyncTask, die einen einzelnen Dateipfadparameter verwendet, eine MultiPartEntity erstellt und festlegt und dann Apache HttpClient verwendet, um das Bild mit dieser Entität hochzuladen. Die JSON-Antwort von Imgur wird in einem JSONObject gespeichert, dessen Inhalt ich zu meinem eigenen Verständnis in LogCat anzeige.

Hier ist ein Screenshot des JSON, den ich von Imgur erhalte:

Ich habe den Fehlerstatus 401 auf api.imgur.com nachgeschlagen und es heißt, dass ich mich mit OAuth authentifizieren mussTrotz Die Tatsache, dass Imgur sehr deutlich gemacht hat, dass Apps OAuth nicht verwenden müssen, wenn Bilder anonym hochgeladen werden (was ich gerade tue).

class UploadToImgurTask extends AsyncTask<String, Void, Boolean> {
    String upload_to;

    @Override
    protected Boolean doInBackground(String... params) {
        final String upload_to = "https://api.imgur.com/3/upload.json";
        final String API_key = "API_KEY";
        final String TAG = "Awais";

        HttpClient httpClient = new DefaultHttpClient();
        HttpContext localContext = new BasicHttpContext();
        HttpPost httpPost = new HttpPost(upload_to);

        try {
            final MultipartEntity entity = new MultipartEntity(
                    HttpMultipartMode.BROWSER_COMPATIBLE);

            entity.addPart("image", new FileBody(new File(params[0])));
            entity.addPart("key", new StringBody(API_key));

            httpPost.setEntity(entity);

            final HttpResponse response = httpClient.execute(httpPost,
                    localContext);

            final String response_string = EntityUtils.toString(response
                    .getEntity());

            final JSONObject json = new JSONObject(response_string);

            Log.d("JSON", json.toString()); //for my own understanding 

            return true;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return false;
    }
}

Nachdem doInBackground den Link zum hochgeladenen Bild an onPostExecute zurückgegeben hat, möchte ich ihn in die Systemzwischenablage kopieren, aber Eclipse sagt weiterhin, dass getSystemService (String) nicht in meiner ASyncTask-Klasse definiert ist.

Es gibt keine legitime Möglichkeit, einen Link (einen String) zurück zum Hauptthread zu senden. Ich muss also alles tun, was ich in onPostExecute in UploadToImgurTask tun muss (was ASyncTask erweitert).

    @Override
protected void onPostExecute(String result) {
    super.onPostExecute(result);
    ClipboardManager clipboard = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE); 
    ClipData clip = ClipData.newPlainText("label", "Text to copy");
    clipboard.setPrimaryClip(clip);
}

Was ist die Ursache des Problems?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage