2016-09-30 3 views
1

Я пытаюсь использовать команду POST, как это:Android POST с запросом HTTP URL

http://123.456.78.9/Dev/SignIn?Username=email%40google.edu&Password=thePassword

в моей Android приложений, и я смотрел на вещи как HttpConnection, но я m все еще не уверен, что лучший способ сделать такой вызов, когда мне нужно включить несколько ключей и значений.

Пытаюсь это сейчас:

   URl url = new URL("http://123.456.78.9/Dev/SignIn?");  
       HttpsURLConnection conn = (HttpsURLConnection) url.openConnection(); 
       conn.setReadTimeout(10000); 
       conn.setConnectTimeout(15000); 
       conn.setRequestMethod("POST"); 
       conn.setDoInput(true); 
       conn.setDoOutput(true); 

       List<NameValuePair> params = new ArrayList<NameValuePair>(); 
       params.add(new BasicNameValuePair("email", emailText)); 
       params.add(new BasicNameValuePair("Password", passwordText)); 
       OutputStream os = conn.getOutputStream(); 
       BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(os, "UTF-8")); 
       writer.write(getQuery(params)); 
       writer.flush(); 
       writer.close(); 
       os.close(); 

ли это сделать эту работу? Также как мне получить ответ, если я должен использовать этот метод?

+0

Похоже, что вы пытаетесь сделать запрос GET, не запрос POST, а у вас есть параметры в строке запроса .... –

+0

Взгляните на ответ здесь: http://stackoverflow.com/questions/33030660/jsonparser-from-androidhive-tutorial-nosuchmethoderror-in-defaulthttpclient –

+0

Взгляните на андроидных библиотек, которые обеспечивают простую и мощную работу с http conne фикция. [volley] (https://developer.android.com/training/volley/index.html) [okhttp] (http://square.github.io/okhttp/) [retofit работать с okhttp] (http: // square.github.io/retrofit/) –

ответ

-1

Вы можете использовать Android Asynchronous Http Client library:

final AsyncHttpClient asyncHttpClient=new AsyncHttpClient(); 
    //Add Parameter 
    RequestParams requestParams=new RequestParams(); 
    requestParams.put("email", emailText); 
    requestParams.put("Password", passwordText); 

    //Chose one from two method in below 

    //send with get method 
    asyncHttpClient.get("http://123.456.78.9/Dev/SignIn", requestParams, new TextHttpResponseHandler() { 
     @Override 
     public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) { 

     } 

     @Override 
     public void onSuccess(int statusCode, Header[] headers, String responseString) { 
      System.out.println(responseString); 
     } 
    }); 

    //send with post method 
    asyncHttpClient.post("http://123.456.78.9/Dev/SignIn", requestParams, new TextHttpResponseHandler() { 
     @Override 
     public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) { 

     } 

     @Override 
     public void onSuccess(int statusCode, Header[] headers, String responseString) { 
      System.out.println(responseString); 
     } 
    }); 

но вы должны добавить эту библиотеку на вашем Gradle

compile 'com.loopj.android:android-async-http:1.4.9'