态
i试图用X-WWW-Form-urlenced将数据发布在身体中,但我失败了
private void sendData(final String toekn) {
RequestParams params = new RequestParams();
params.put("_token", toekn);
StringEntity entity=null;
try {
entity = new StringEntity(params.toString());
entity.setContentType(new BasicHeader(HTTP.CONTENT_TYPE, "application/x-www-form-urlencoded; charset=UTF-8"));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
PropClient.post(getBaseContext(), "", entity, new JsonHttpResponseHandler() {
@Override
public void onSuccess(int statusCode, Header[] headers, JSONObject response) {
Log.e("see", response.toString());
Toast.makeText(SplashActivity.this, response.toString()+"", Toast.LENGTH_SHORT).show();
}
@Override
public void onSuccess(int statusCode, Header[] headers, JSONArray timeline) {
// Pull out the first event on the public timeline
// Do something with the response
}
@Override
public void onFailure(int statusCode, Header[] headers, String response, Throwable e) {
}
@Override
public void onRetry(int retryNo) {
// called when request is retried
}
});
}
上面是我尝试过的代码,但总是会失败。API在Postman中的工作非常完美,我附上了用于理解参数的图片。
image1
image2
静态类
公共类Propclient { 私有静态最终字符串base_url =";
private static AsyncHttpClient client = new AsyncHttpClient();
public static void get(String url, RequestParams params, AsyncHttpResponseHandler responseHandler) {
client.get(getAbsoluteUrl(url), params, responseHandler);
}
public static void post(Context context, String url, StringEntity entity, AsyncHttpResponseHandler responseHandler) {
// client.addHeader("Accept", "application/json");
client.addHeader("Content-Type", "application/x-www-form-urlencoded");
entity.setContentType("application/json");
client.setUserAgent("android");
client.post(context, getAbsoluteUrl(url), entity, "application/json", responseHandler);
}
private static String getAbsoluteUrl(String relativeUrl) {
String url = BASE_URL + relativeUrl;
return url;
}
}
编译'com.android.volley:射击:1.0.0'
private void getVolley(final String token, String url) {
final RequestQueue requestQueue = Volley.newRequestQueue(getApplicationContext());
StringRequest jsonObjRequest = new StringRequest(Request.Method.POST, url, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Toast.makeText(SplashActivity.this, response + " success", Toast.LENGTH_SHORT).show();
Log.e("volley", response);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(SplashActivity.this, error.toString() + "", Toast.LENGTH_SHORT).show();
}
}) {
@Override
public String getBodyContentType() {
return "application/x-www-form-urlencoded; charset=UTF-8";
}
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
Map<String, String> params = new HashMap<String, String>();
params.put("User-Agent", "android");
params.put("Content-Type", "application/x-www-form-urlencoded");
return params;
}
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String, String> params = new HashMap<String, String>();
params.put("_token", token);
return params;
}
};
jsonObjRequest.setRetryPolicy(new DefaultRetryPolicy(30 * 1000,
DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
requestQueue.add(jsonObjRequest);
}
您需要添加标头,如下: -
public static void setHttpClient(AsyncHttpClient c, Application application) {
c.addHeader("Accept-Language", Locale.getDefault().toString());
c.addHeader("Host", HOST);
c.addHeader("Connection", "Keep-Alive");
//noinspection deprecation
c.getHttpClient().getParams()
.setParameter(ClientPNames.ALLOW_CIRCULAR_REDIRECTS, true);
// Set AppToken
c.addHeader("AppToken", Verifier.getPrivateToken(application));
//c.addHeader("AppToken", "123456");
// setUserAgent
c.setUserAgent(ApiClientHelper.getUserAgent(AppContext.getInstance()));
CLIENT = c;
initSSL(CLIENT);
initSSL(API.mClient);
}
您需要查看此链接以获取更多信息。