如何使用LOOPJ-ASYNC-HTTP库中X-WWW-Form-urlenCoded主体发送发布请求



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);
}

您需要查看此链接以获取更多信息。

相关内容

  • 没有找到相关文章

最新更新