我使用OKHTTP 3将参数传输到heroku节点服务器时遇到麻烦。
它适用于Postman,但不适用于Android App。
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登录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);
... .... ....
});
经过大量的研究,我自己解决了这个问题。
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);