Anonyme Hochladen von Datei-Objekt an Imgur-API (JSON) bietet Authentifizierung-Fehler 401

Habe ich einen Klasse UploadToImgurTask als AsyncTask, die eine einzelne Datei path-parameter, erzeugt und setzt ein MultiPartEntity, und dann verwendet der Apache HttpClient hochladen, das Bild mit der jeweiligen Entität. Die JSON Antwort von Imgur gespeichert ist, in ein JSONObject, die Inhalte von denen ich die Anzeige in LogCat für mein eigenes Verständnis.

Hier ist ein screenshot von der JSON bekomme ich von Imgur:

Anonyme Hochladen von Datei-Objekt an Imgur-API (JSON) bietet Authentifizierung-Fehler 401

Ich blickte auf Fehler-Status 401 auf api.imgur.com und er sagt, dass ich brauche, um die Authentifizierung mit OAuth trotz die Tatsache, dass Imgur hat sehr deutlich gesagt, dass die apps müssen nicht für die Verwendung von OAuth, wenn Bilder hochgeladen werden anonym (was ist das, was ich jetzt tun).

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;
    }
}

Nach doInBackground gibt den link zu dem hochgeladenen Bild zu onPostExecute, möchte ich für das kopieren in die Zwischenablage des Systems, aber Eclipse sagt immer getSystemService(String) ist nicht definiert, die in meiner ASyncTask Klasse.

Es gibt keine legit Weg, um zurückzukehren-link (ein String) zurück zu der Haupt-thread, so habe ich zu tun, was ich tun muss, um innerhalb von onPostExecute innerhalb UploadToImgurTask (die extends ASyncTask)

    @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 das problem verursacht?

InformationsquelleAutor Awais Imran | 2013-05-19
Schreibe einen Kommentar