首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何为Imgflip API实现post方法

如何为Imgflip API实现post方法
EN

Stack Overflow用户
提问于 2019-05-23 04:25:37
回答 1查看 708关注 0票数 0

我正在尝试在android studio上创建一个应用程序,并且我是这个IDE和语言的新手。我设法实现了Imflip api的GET方法,但我坚持使用POST方法。我想返回一个由用户添加标题的Meme。

我使用的是Android Studio 3.4.1。我试过附加的代码。出于测试目的,我硬编码了用户名、密码和两个标题。此外,当我调用POST()时,我将id 61579作为参数传递。我试着找出响应的值,但它说它是“200”…

我需要的是一个网址为创建的表情包。

希望有人能帮上忙。提前谢谢。

代码语言:javascript
运行
复制
private void POST(String memeID) {
    try {
        RequestQueue requestQueue = Volley.newRequestQueue(this);
        String URL = "https://api.imgflip.com/caption_image";
        JSONObject jsonBody = new JSONObject();
        jsonBody.put("template_id", memeID);
        jsonBody.put("username", "Meme_Genie");
        jsonBody.put("password", "Password");
        jsonBody.put("text0", "Hello");
        jsonBody.put("text1", "World");
        final String requestBody = jsonBody.toString();

        StringRequest stringRequest = new StringRequest(Request.Method.POST, URL, new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {
                Log.i("VOLLEY", response);
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                Log.e("VOLLEY", error.toString());
            }
        }) {
            @Override
            public String getBodyContentType() {
                return "application/json; charset=utf-8";
            }

            @Override
            public byte[] getBody() throws AuthFailureError {
                try {
                    return requestBody == null ? null : requestBody.getBytes("utf-8");
                } catch (UnsupportedEncodingException uee) {
                    VolleyLog.wtf("Unsupported Encoding while trying to get the bytes of %s using %s", requestBody, "utf-8");
                    return null;
                }
            }

            @Override
            protected Response<String> parseNetworkResponse(NetworkResponse response) {
                String responseString = "";
                if (response != null) {
                    responseString = String.valueOf(response.statusCode);
                    // can get more details such as response.headers
                }
                return Response.success(responseString, HttpHeaderParser.parseCacheHeaders(response));
            }
        };

        requestQueue.add(stringRequest);
    } catch (JSONException e) {
        e.printStackTrace();
    }

}
EN

回答 1

Stack Overflow用户

发布于 2020-04-27 04:00:44

从encode = "json"切换到encode = "form"

或者将你的身体切换到BodySerializationMethod.UrlEncoded模式就行了

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56264501

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档