2015-09-18 3 views
0

Я новичок в разработчиках Android, и я много ищу в Интернете, я нашел решение для отправки данных на веб-сайт, но поскольку большая часть команды устарела, я не знаю Не знаю, как это сделать. Я хочу заполнить форму сайта (например, форму для входа), взаимодействуя с моим приложением Android и отправлять ему данные. (с использованием связывания). вот некоторые части устаревшего кода: HttpClient httpClient = new DefaultHttpClient();Autofill форма сайта с входными данными приложения android

  // In a POST request, we don't pass the values in the URL. 
      //Therefore we use only the web page URL as the parameter of the HttpPost argument 
      HttpPost httpPost = new HttpPost("http://my2film7.in/"); 

      // Because we are not passing values over the URL, we should have a mechanism to pass the values that can be 
      //uniquely separate by the other end. 
      //To achieve that we use BasicNameValuePair 
      //Things we need to pass with the POST request 
      BasicNameValuePair usernameBasicNameValuePair = new BasicNameValuePair("paramUsername", paramUsername); 
      BasicNameValuePair passwordBasicNameValuePAir = new BasicNameValuePair("paramPassword", paramPassword); 

      // We add the content that we want to pass with the POST request to as name-value pairs 
      //Now we put those sending details to an ArrayList with type safe of NameValuePair 
      List<NameValuePair> nameValuePairList = new ArrayList<NameValuePair>(); 
      nameValuePairList.add(usernameBasicNameValuePair); 
      nameValuePairList.add(passwordBasicNameValuePAir); 

      try { 
       // UrlEncodedFormEntity is an entity composed of a list of url-encoded pairs. 
       //This is typically useful while sending an HTTP POST request. 
       UrlEncodedFormEntity urlEncodedFormEntity = new UrlEncodedFormEntity(nameValuePairList); 

       // setEntity() hands the entity (here it is urlEncodedFormEntity) to the request. 
       httpPost.setEntity(urlEncodedFormEntity); 

       try { 
        // HttpResponse is an interface just like HttpPost. 
        //Therefore we can't initialize them 
        HttpResponse httpResponse = httpClient.execute(httpPost); 

        // According to the JAVA API, InputStream constructor do nothing. 
        //So we can't initialize InputStream although it is not an interface 
        InputStream inputStream = httpResponse.getEntity().getContent(); 

        InputStreamReader inputStreamReader = new InputStreamReader(inputStream); 

        BufferedReader bufferedReader = new BufferedReader(inputStreamReader); 

        StringBuilder stringBuilder = new StringBuilder(); 

        String bufferedStrChunk = null; 

        while((bufferedStrChunk = bufferedReader.readLine()) != null){ 
         stringBuilder.append(bufferedStrChunk); 
        } 

        return stringBuilder.toString(); 

       } catch (ClientProtocolException cpe) { 
        System.out.println("First Exception caz of HttpResponese :" + cpe); 
        cpe.printStackTrace(); 
       } catch (IOException ioe) { 
        System.out.println("Second Exception caz of HttpResponse :" + ioe); 
        ioe.printStackTrace(); 
       } 

      } catch (UnsupportedEncodingException uee) { 
       System.out.println("An Exception given because of UrlEncodedFormEntity argument :" + uee); 
       uee.printStackTrace(); 
      } 

      return null; 

ответ

0

Обновить код на что-то вроде этого:

  // Get user defined values 
      Name = "your username here"; 
      Email = "email"; 
      Login = "user"; 
      Pass = "password"; 

      // Create data variable for sent values to server 

      String data = URLEncoder.encode("name", "UTF-8") 
         + "=" + URLEncoder.encode(Name, "UTF-8"); 

     data += "&" + URLEncoder.encode("email", "UTF-8") + "=" 
         + URLEncoder.encode(Email, "UTF-8"); 

      data += "&" + URLEncoder.encode("user", "UTF-8") 
         + "=" + URLEncoder.encode(Login, "UTF-8"); 

      data += "&" + URLEncoder.encode("pass", "UTF-8") 
         + "=" + URLEncoder.encode(Pass, "UTF-8"); 

      String text = ""; 
      BufferedReader reader=null; 

      // Send data 
      try 
      { 

       // Defined URL where to send data 
       URL url = new URL("http://androidexample.com/media/webservice/httppost.php"); 

      // Send POST data request 

      URLConnection conn = url.openConnection(); 
      conn.setDoOutput(true); 
      OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream()); 
      wr.write(data); 
      wr.flush(); 

      // Get the server response 

      reader = new BufferedReader(new InputStreamReader(conn.getInputStream())); 
      StringBuilder sb = new StringBuilder(); 
      String line = null; 

      // Read Server Response 
      while((line = reader.readLine()) != null) 
       { 
        // Append server response in string 
        sb.append(line + "\n"); 
       } 

       text = sb.toString(); 
      } 
      catch(Exception ex) 
      {    
      } 
      finally 
      { 
       try 
       { 
        reader.close(); 
       } 
        catch(Exception ex) {} 
      }     
      // Show response on activity 
      content.setText(text ); 

Вместо устаревшего httpPost и namevaluepairs вам нужно использовать URLConnection и записи значений с помощью потока.

+0

Есть исключение из этой строки: OutputStreamWriter wr = new OutputStreamWriter (conn.getOutputStream()); Не могли бы вы привести меня к тому, что может вызвать это? –

+0

Возможно, ваше соединение не установлено. Вы можете проверить, имеет ли значение «conn» значение null. –

Смежные вопросы