使用Android应用程序的输入数据自动填充网站的一种形式

时间:2015-09-18 15:34:59

标签: android post httpurlconnection deprecated autofill

我是Android开发人员的新手,我通过互联网搜索了很多,我找到了一个向网站发送数据的解决方案,但由于大多数命令已弃用,我不知道如何做到这一点。 我希望通过与我的Android应用程序交互填写网站表单(如登录表单)并将数据发送给它。 (使用urlconnection)。 这是已弃用代码的一些部分:   HttpClient httpClient = new DefaultHttpClient();

            // 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;

1 个答案:

答案 0 :(得分: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并使用流来编写值,而不是弃用的namevaluepairsURLConnection