最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

OKHTTP 3请求post params不会传输到Heroku上的Node服务器

运维笔记admin12浏览0评论

OKHTTP 3请求post params不会传输到Heroku上的Node服务器

OKHTTP 3请求post params不会传输到Heroku上的Node服务器

我使用OKHTTP 3将参数传输到heroku节点服务器时遇到麻烦。

它适用于Postman,但不适用于Android App。

  • Android代码(参数在底部的Heroku日志中未定义) public void makePayment(String phone, String token, String type, double amount, final ResultListener listener){ RequestBody requestBody = new MultipartBody.Builder().setType(MultipartBody.FORM) .setType(MultipartBody.FORM) .addFormDataPart("phoneNumber", phone) .addFormDataPart("serviceType", type) .addFormDataPart("stripeToken", token) .addFormDataPart("serviceCost", String.valueOf(amount)) .build(); final Request request = new Request.Builder() .url(Const.URL_HEROKU_BASE+"payment/charge") .post(requestBody) .build(); client.newCall(request).enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { if (listener != null) { listener.onResponse(false, e.getLocalizedMessage()); } } @Override public void onResponse(Call call, Response response) throws IOException { if (listener != null) { listener.onResponse(true, response.body().string()); } } }); } heroku登录
  • 邮差(参数定义)
  • Heroku节点服务器(调试) router.post('/charge', (req, res, next) => { const phoneNumber = req.body.phoneNumber; const serviceType = req.body.serviceType; const stripeToken = req.body.stripeToken; const serviceCost = req.body.serviceCost; console.log('phoneNumber : ' + phoneNumber); console.log('serviceType : ' + serviceType); console.log('stripeToken : ' + stripeToken); console.log('serviceCost : ' + serviceCost); ... .... .... });
回答如下:

经过大量的研究,我自己解决了这个问题。

惊人的Volley(Android的简易快速网络)真正帮助我从here正确地解决了这个问题。

    String url = Const.URL_HEROKU_BASE + "payment/charge";

    final Map<String, String> params = new HashMap();
    params.put("phoneNumber", phone);
    params.put("stripeToken", token);
    params.put("serviceType", type);
    params.put("serviceCost", String.valueOf(amount));

    RequestQueue queue = Volley.newRequestQueue(context);

    StringRequest strRequest = new StringRequest(Request.Method.POST, url,
            new Response.Listener<String>()
            {
                @Override
                public void onResponse(String response)
                {
                    Toast.makeText(context, response, Toast.LENGTH_SHORT).show();
                }
            },
            new Response.ErrorListener()
            {
                @Override
                public void onErrorResponse(VolleyError error)
                {
                    Toast.makeText(context, error.toString(), Toast.LENGTH_SHORT).show();
                }
            })
    {
        @Override
        protected Map<String, String> getParams()
        {
            return params;
        }
    };

    queue.add(strRequest);
发布评论

评论列表(0)

  1. 暂无评论