gpt4 book ai didi

php - Android-Studio - Android 应用程序中的 http 连接处理

转载 作者:行者123 更新时间:2023-11-30 22:40:06 25 4
gpt4 key购买 nike

我有问题。我无法连接到 MySQL 服务器。我遵循了本教程 simplifiedcoding.net/android-php-mysql-login-tutorial-android-login-app-3/我想进行简单的 PHP MySQL 登录。但有些东西如“NameValuePair”、“BasicNameValuePair”、“HttpClient”、“HttpPost”、“HttpResponse”、“HttpEntity”、“UrlEncodedFormEntity”等已被弃用。我想问一下,任何人都可以正确编码吗?或者只是帮助我?

这是无法正常工作的代码:(并感谢您的帮助)

@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;
}

最佳答案

实际上您发布的链接来 self 的网站。当我编写本教程时,这些类并没有被弃用。如果您要查看我的网站,那么我已经发布了更新的教程。

要向您的 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();
}
}

现在您需要做的就是在主 Activity 中创建一个 AsyncTask 并在 doInBackGround 方法中

调用 sendPostRequest() 方法

您必须传递脚本的 url 来处理 post 请求,并传递 hashmap 中的参数以随请求一起发送数据。

有关更多详细信息,请访问 Android PHP MySQL - CRUD Operation

关于php - Android-Studio - Android 应用程序中的 http 连接处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31366728/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com