0
votes

Envoi de paramètres dans une demande postale à l'aide de volley

Essayer d'ajouter Mangnet Link à un compte de premiumze à l'aide de leur API https://app.swaggerhub.com/apis-docs/premiumize.me/api/1.4#/transfer/transfercreate .

Message de réponse: {"statut": "erreur", "message": "src est manquant"}} code> p>

code est comme suit: - p>

void pushMagnet(final String apiKey, final String magnetLink, final Context context) {
    final String url = "https://premiumize.me/api/transfer/create?apikey=" + apiKey;

    Map<String, String> magnetSrc = new HashMap<>();
    //Parameters i want to send
    magnetSrc.put("src", magnetLink);

    RequestQueue queue = Volley.newRequestQueue(context);

    JsonObjectRequest stringRequest = new JsonObjectRequest(Request.Method.POST, url,
            //here added as an JSON Object
            new JSONObject(magnetSrc),
            new Response.Listener<JSONObject>() {
                @Override
                public void onResponse(JSONObject response) {
                    Log.e("Rest Response:", response.toString());
                }
            }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            Log.e("Rest Error:", error.toString());
        }
    }
    ) {
        @Override
        public Map<String, String> getHeaders() throws AuthFailureError {
            Map<String, String> headers = new HashMap<>();
            headers.put("accept", "application/json");
            headers.put("Content-Type", "multipart/form-data");

            return headers;
        }
    };
    queue.add(stringRequest);
}


4 commentaires

En regardant le Swagger, vous devez ajouter trois paramètres différents, vous ajoutez-vous tous?


J'ai besoin de choisir l'un des deux premiers paramètres, le troisième est facultatif. e. g. Cette commande CURL fonctionne sans problème curl -x post "https://www.premiumize.me/api/transfer/create" -h "accepter: application / json" -h "Type de contenu: multipart / formulaire Data "-F" src = samplemagneLink "


Vous êtes-vous assuré que le type de contenu est correct?


Comme indiqué par Tomin, le type de contenu était effectivement faux, mais je reçois toujours la même réponse de l'API


3 Réponses :


0
votes

La plupart probablement l'erreur est au paramètre de l'en-tête "Type de contenu" .

Vous avez utilisé des informations d'en-tête incorrectes "multiplactform / form-données"

Essayez d'ajouter le "Type de contenu" à "Multipart / Form-Data" sur les données d'en-tête.

La soumission de multipardata est différente de la soumission de la forme normale. Vous devez utiliser la multiparentalité au lieu de la carte.

essayez de suivre ce lien pour les données multiparties: Comment envoyer un message" Multipart / Form-Data "dans Android avec Volley

J'espère que cela résoudra votre problème.


4 commentaires

Merci, édité le code, toutefois que l'erreur se produit toujours.


Oui, c'est exactement la même chose. Je reçois cette erreur même lorsque je ne écrase pas l'en-tête.


Utilisez des clients API de repos pour vous connecter avec le serveur et vérifier si l'appel de l'API fonctionne ou non.


Cette demande de courbure fonctionne: curl -x post "https://www.premiumize.me/api/transfer/create" -h "accepter: Application / JSON" -H "Type de contenu: Multipart / Form-Data "-F" src = samplemagneLink "



0
votes

Solution de contournement:

Utilisez cette bibliothèque et ce code:

https://github.com/amitchekhariitbhu/fast-android-networking xxx


1 commentaires

Androidnetworking.Initialiser (contexte, client); devrait être sur ONCREATE de l'application.



0
votes

Pour l'envoi de paramètres dans Volley, vous devez remplacer les getparams () xxx


0 commentaires