Php Android Studio-Android应用程序中的http连接处理
我有问题。我无法连接到MySQL服务器。我遵循了这个教程simplifiedcoding.net/android-php-mysql-login-tutorial-android-login-app-3/,我想做一个简单的php-mysql登录。但有些东西,如“NameValuePair”、“BasicNameValuePair”、“HttpClient”、“HttpPost”、“HttpResponse”、“HttpEntity”、“UrlEncodedFormEntity”等等,都被弃用。我想问的是,有人能把这个编码对吗?还是帮我 以下是工作不正常的代码: (谢谢你的帮助)Php Android Studio-Android应用程序中的http连接处理,php,android,mysql,Php,Android,Mysql,我有问题。我无法连接到MySQL服务器。我遵循了这个教程simplifiedcoding.net/android-php-mysql-login-tutorial-android-login-app-3/,我想做一个简单的php-mysql登录。但有些东西,如“NameValuePair”、“BasicNameValuePair”、“HttpClient”、“HttpPost”、“HttpResponse”、“HttpEntity”、“UrlEncodedFormEntity”等等,都被弃用。我
@覆盖
受保护的字符串doInBackground(字符串…参数){
字符串uname=params[0];
字符串过程=参数[1];
InputStream=null;
List nameValuePairs=新的ArrayList();
添加(新的BasicNameValuePair(“用户名”,uname));
添加(新的BasicNameValuePair(“密码”,pass));
字符串结果=null;
试一试{
HttpClient HttpClient=新的DefaultHttpClient();
HttpPost-HttpPost=newhttppost(“site.com/login.php”);
setEntity(新的UrlEncodedFormEntity(nameValuePairs));
HttpResponse response=httpClient.execute(httpPost);
HttpEntity=response.getEntity();
is=entity.getContent();
BufferedReader reader=新的BufferedReader(新的InputStreamReader(is,“UTF-8”),8;
StringBuilder sb=新的StringBuilder();
字符串行=null;
而((line=reader.readLine())!=null)
{
sb.追加(第+行“\n”);
}
结果=sb.toString();
}捕获(客户端协议例外e){
e、 printStackTrace();
}捕获(不支持的编码异常e){
e、 printStackTrace();
}捕获(IOE异常){
e、 printStackTrace();
}
返回结果;
}
实际上,您发布的链接来自我的网站。当我编写本教程时,这些类并没有被弃用。如果你会检查我的网站,那么我已经发布了更新的教程
要向web服务器发送http post请求,可以使用以下代码
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();
}
}
公共类RequestHandler{
公共字符串sendPostRequest(字符串请求URL,
HashMap postDataParams){
网址;
StringBuilder sb=新的StringBuilder();
试一试{
url=新url(请求url);
HttpURLConnection conn=(HttpURLConnection)url.openConnection();
连接设置读取超时(15000);
连接设置连接超时(15000);
conn.setRequestMethod(“POST”);
conn.setDoInput(真);
连接设置输出(真);
OutputStream os=conn.getOutputStream();
BufferedWriter=新的BufferedWriter(
新的OutputStreamWriter(操作系统,“UTF-8”);
write(getPostDataString(postDataParams));
writer.flush();
writer.close();
os.close();
int responseCode=conn.getResponseCode();
if(responseCode==HttpsURLConnection.HTTP\u确定){
BufferedReader br=新的BufferedReader(新的InputStreamReader(conn.getInputStream());
sb=新的StringBuilder();
字符串响应;
而((response=br.readLine())!=null){
某人追加(答复);
}
}
}捕获(例外e){
e、 printStackTrace();
}
使某人返回字符串();
}
私有字符串getPostDataString(HashMap参数)引发UnsupportedEncodingException{
StringBuilder结果=新建StringBuilder();
布尔值优先=真;
对于(Map.Entry:params.entrySet()){
如果(第一)
第一个=假;
其他的
结果。追加(&);
append(URLEncoder.encode(entry.getKey(),“UTF-8”);
结果。追加(“=”);
append(URLEncoder.encode(entry.getValue(),“UTF-8”);
}
返回result.toString();
}
}
现在,您所需要做的就是在主活动内部创建一个AsyncTask和一个doInBackGround方法内部
调用sendPostRequest()方法
您必须传递脚本的url以处理post请求,并传递hashmap中的参数以随请求一起发送数据
有关更多详细信息,请访问实际上,您发布的链接来自我的网站。当我编写本教程时,这些类并没有被弃用。如果你会检查我的网站,那么我已经发布了更新的教程 要向web服务器发送http post请求,可以使用以下代码
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();
}
}
公共类RequestHandler{
公共字符串sendPostRequest(字符串请求URL,
HashMap postDataParams){
网址;
StringBuilder sb=新的StringBuilder();
试一试{
url=新url(请求url);
HttpURLConnection conn=(HttpURLConnection)url.openConnection();
连接设置读取超时(15000);
连接设置连接超时(15000);
conn.setRequestMethod(“POST”);
conn.setDoInput(真);
连接设置输出(真);
OutputStream os=conn.getOutputStream();
BufferedWriter=新的BufferedWriter(
新的OutputStreamWriter(操作系统,“UTF-8”);
write(getPostDataString(postDataParams));
writer.flush();
writer.close();
os.close();
int responseCode=conn.getResponseCode();
if(responseCode==HttpsURLConnection.HTTP\u确定){
BufferedReader br=新的BufferedReader(新的InputStreamReader(conn.getInputStream());
sb=新的StringBuilder();
字符串响应;
而((response=br.readLine())!=null){