2015-07-12 98 views
1

我有问题。我无法连接到MySQL服务器。我遵循这个教程simplifiedcoding.net/android-php-mysql-login-tutorial-android-login-app-3/,我想做简单的PHP MySQL登录。但是,不推荐使用“NameValuePair”,“BasicNameValuePair”,“HttpClient”,“HttpPost”,“HttpResponse”,“HttpEntity”,“UrlEncodedFormEntity”等内容。我想问,任何人都可以编码这个权利?或者只是帮助我?Android工作室 - http连接处理在Android应用程序

这里是一个不能正常工作的代码: (并感谢您的帮助)

@Override 
      protected String doInBackground(String... params) { 
       String uname = params[0]; 
       String pass = params[1]; 

       InputStream is = null; 
       List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(); 
       nameValuePairs.add(new BasicNameValuePair("username", uname)); 
       nameValuePairs.add(new BasicNameValuePair("password", pass)); 
       String result = null; 

       try{ 
        HttpClient httpClient = new DefaultHttpClient(); 
        HttpPost httpPost = new HttpPost("site.com/login.php"); 
        httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 

        HttpResponse response = httpClient.execute(httpPost); 

        HttpEntity entity = response.getEntity(); 

        is = entity.getContent(); 

        BufferedReader reader = new BufferedReader(new InputStreamReader(is, "UTF-8"), 8); 
        StringBuilder sb = new StringBuilder(); 

        String line = null; 
        while ((line = reader.readLine()) != null) 
        { 
         sb.append(line + "\n"); 
        } 
        result = sb.toString(); 
       } catch (ClientProtocolException e) { 
        e.printStackTrace(); 
       } catch (UnsupportedEncodingException e) { 
        e.printStackTrace(); 
       } catch (IOException e) { 
        e.printStackTrace(); 
       } 
       return result; 
      } 
+0

Apache的HttpClient的是deprecrated并且必须通过HttpURLConnection类来代替。看到这里:http://developer.android.com/reference/java/net/HttpURLConnection.html –

+0

而你的问题标题并没有反映你真正的问题。请改变它。你问的关于在Android应用程序中的http连接处理不是关于AS中的jdbc连接问题。 –

+0

它不帮忙; x – Kahba2000

回答

0

其实你发布的链接是从我的网站。当我编写本教程时,这些类不会被弃用。如果你会检查我的网站,那么我已经发布了一个更新的教程。

要发送一个http post请求到你的web服务器,你可以使用下面的代码。

public class RequestHandler { 
public String sendPostRequest(String requestURL, 
           HashMap<String, String> postDataParams) { 
    URL url; 

    StringBuilder sb = new StringBuilder(); 
    try { 
     url = new URL(requestURL); 

     HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 

     conn.setReadTimeout(15000); 
     conn.setConnectTimeout(15000); 
     conn.setRequestMethod("POST"); 
     conn.setDoInput(true); 
     conn.setDoOutput(true); 

     OutputStream os = conn.getOutputStream(); 

     BufferedWriter writer = new BufferedWriter(
       new OutputStreamWriter(os, "UTF-8")); 
     writer.write(getPostDataString(postDataParams)); 

     writer.flush(); 
     writer.close(); 
     os.close(); 
     int responseCode = conn.getResponseCode(); 

     if (responseCode == HttpsURLConnection.HTTP_OK) { 

      BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream())); 
      sb = new StringBuilder(); 
      String response; 
      while ((response = br.readLine()) != null){ 
       sb.append(response); 
      } 
     } 

    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    return sb.toString(); 
} 

private String getPostDataString(HashMap<String, String> params) throws UnsupportedEncodingException { 
    StringBuilder result = new StringBuilder(); 
    boolean first = true; 
    for (Map.Entry<String, String> entry : params.entrySet()) { 
     if (first) 
      first = false; 
     else 
      result.append("&"); 

     result.append(URLEncoder.encode(entry.getKey(), "UTF-8")); 
     result.append("="); 
     result.append(URLEncoder.encode(entry.getValue(), "UTF-8")); 
    } 

    return result.toString(); 
} 
} 

现在,所有你需要做的就是在你里面主要活动创建的AsyncTask和doInBackground方法中

调用sendPostRequest()方法

你必须通过你的网址脚本来处理发布请求和散列表中的参数以及请求发送数据。

欲了解更多详情,请访问Android PHP MySQL - CRUD Operation

相关问题