2017-02-28 2 views
1

현재 내가 만드는 오전 매개 변수 :안드로이드에서 AsyncHttpClient를 사용하는 URL 매개 변수 대신 Form 매개 변수로 매개 변수를 보내는 방법은 무엇입니까? 와

RequestParams params = new RequestParams(); 
params.put("Param1","Value1"); 

그리고 다음과 같이 게시 :

AsyncHttpClient client = new AsyncHttpClient(); 
client.post(restApiUrl, params, responseHandler); 

그것을 URL 매개 변수하게 그러나.

POST 요청 본문을 Form 매개 변수로 추가하는 방법은 무엇입니까?

+1

이 더 많은 코드를 입력하십시오. 매개 변수를 전달하는 방법은 무엇입니까? – MaxV

+0

[Android AsyncHttpClient : 다중 부분 양식 데이터를 POST하는 방법?] (http://stackoverflow.com/questions/33649852/android-asynchttpclient-how-to-post-multipart-form-data) 가능한 중복 – MaxV

답변

0

간단한 방법 - 사용 URL 인코더 클래스

샘플 AsyncTask를 클래스 인수에 URL 매개 변수를 수신

... 당신은 URL 인코더의 매개 변수의 수를 전달할 수 있습니다!

public class LongOperation extends AsyncTask<String, Void, String> { 


    Context context; 
    ProgressDialog progressDialog; 

    public LongOperation(Context context) 
    { 
     this.context=context; 
     progressDialog=new ProgressDialog(context); 
    } 


    protected void onPreExecute() { 

     progressDialog.setTitle("test"); 
     progressDialog.setMessage("Loading . . . ."); 
     progressDialog.setCancelable(false); 
     progressDialog.show(); 
     Toast.makeText(context,"loading . . .",Toast.LENGTH_LONG).show(); 
    } 

    // Call after onPreExecute method 
    protected String doInBackground(String... urls) { 

     try { 
      URL url=new URL(urls[0]); 
      URLConnection con=url.openConnection(); 
      con.setDoOutput(true); 

      con.setDoInput(true); 

      // request 
      OutputStreamWriter io=new OutputStreamWriter(con.getOutputStream()); 
      // parameters 
      io.write(URLEncoder.encode("name", "UTF-8") + "=" + URLEncoder.encode(urls[1], "UTF-8")); 
      io.flush(); 

      // response 
      BufferedReader reader=new BufferedReader(new InputStreamReader(con.getInputStream())); 

      String line,received=""; 

      while ((line=reader.readLine())!=null) 
      { 
       received+=line; 
      } 
      return received; 
     } 
     catch (Exception e) { 
      return e.getMessage().toString(); 
     } 
    } 
    protected void onPostExecute(String un) { 
     if(processDialog.isShowing()) 
      processDialog.dimiss(); 

    } 
} 

나는 이것이 당신을 도울 것이라고 생각합니다! 감사합니다.

1

Volley을 사용하는 것이 좋습니다. 발리 (Volley)는 안드로이드 애플 리케이션을위한 네트워킹을보다 쉽고 중요하게, 더 빠르게 만드는 HTTP 라이브러리입니다. 발리는 GitHub에 있습니다. GET과

발리 : POST와

RequestQueue queue = Volley.newRequestQueue(getContext); 
String url = "http://www.someurl.com?param1=value1&param2=value2"; // your url 
StringRequest stringRequest = new StringRequest(Request.Method.GET, url, new Response.Listener<String>() { 
     @Override 
     public void onResponse(String response) { 
      // here you will get the response from the url 
      Log.d(TAG, response); 
     } 
    }, new Response.ErrorListener() { 
     @Override 
     public void onErrorResponse(VolleyError error) { 
      // in case there is error in request, it'll be thrown here 
      Log.e(TAG, error.toString); 
     } 
    }); 

    queue.add(stringRequest); 

발리 :

RequestQueue queue = Volley.newRequestQueue(getContext); 
String url = "http://www.someurl.com"; // your url 
StringRequest stringRequest = new StringRequest(Request.Method.POST, url, new Response.Listener<String>() { 
     @Override 
     public void onResponse(String response) { 
      // here you will get the response from the url 
      Log.d(TAG, response); 
     } 
    }, new Response.ErrorListener() { 
     @Override 
     public void onErrorResponse(VolleyError error) { 
      // in case there is error in request, it'll be thrown here 
      Log.e(TAG, error.toString); 
     } 
    }){ 
     @Override 
     protected Map<String,String> getParams(){ 
      // here you add params 
      Map<String,String> params = new HashMap<>(); 
      params.put("param1", "value1"); 
      params.put("param2", "value2"); 
      return params; 
     } 
     @Override 
     public Map<String, String> getHeaders() throws AuthFailureError { 
      return super.getHeaders(); 
     } 

     @Override 
     public String getBodyContentType() { 
      return super.getBodyContentType(); 
     } 
    }; 
    queue.add(stringRequest);