gpt4 book ai didi

java - 使用帖子的登录表单只能使用一次?找不到错误

转载 作者:行者123 更新时间:2023-12-01 12:49:38 25 4
gpt4 key购买 nike

我遇到了这个问题,但我不知道如何解决这个问题。我正在使用 android studio 来编译我的项目。我遇到的问题是我只能成功发送一次登录信息,这对我来说很奇怪。我不是高级 Android 程序员。

这是我遇到问题的代码:

public void postData(String valueIWantToSend) {
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(LOGIN_URL);
try {
List nameValuePairs = new ArrayList();
nameValuePairs.add(new BasicNameValuePair("username", user.getText().toString()));
nameValuePairs.add(new BasicNameValuePair("password", pass.getText().toString()));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
response = httpclient.execute(httppost);
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}

private class MyAsyncTask extends AsyncTask<String, Integer, Double>{
JSONArray jsonArray = null;
HttpEntity entity = null;
String responsestr = null;
JSONObject json = null;
@Override
protected Double doInBackground(String... params) {
postData(params[0]);
return null;
}
protected void onPostExecute(Double result){
pb.setVisibility(View.GONE);
entity = response.getEntity();
try {
responsestr = EntityUtils.toString(entity);
Toast.makeText(getApplicationContext(),
"We have good response string",
Toast.LENGTH_SHORT)
.show();
jsonArray = new JSONArray(responsestr);
} catch (JSONException e){
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
Integer success = 0;
for (int i=0; i<jsonArray.length(); i++)
{
json = null;
try {
json = jsonArray.getJSONObject(i);
success = json.getInt("success");
Toast.makeText(getApplicationContext(),
"We Have a good return",
Toast.LENGTH_SHORT)
.show();
} catch (JSONException e) {
e.printStackTrace();
}
}
if (success == 1){
Toast.makeText(getApplicationContext(), "Login Successful", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(getApplicationContext(), "Login Failed", Toast.LENGTH_SHORT).show();
}
}
protected void onProgressUpdate(Integer... progress){
pb.setProgress(progress[0]);
}
}

现在正如我所说,它可以工作一次,然后如果您重试登录或更正用户名密码,它就会变得无响应?

真的不知道如何解决这个问题。如果我遗漏了任何信息,请告诉我,我很乐意向您提供。

编辑1(可能会是一个漫长的夜晚):

好吧,我已经看到该帖子每次在应用程序变得无响应之前都有效。似乎它只检索一次数据,即使应用程序关闭并重新打开,也不会再检索一次。只有当我从 Android studio 重新编译时它才会再次工作,然后它会返回到非响应状态:(。

编辑2:

对不起,大家这是我如何从附加到登录按钮的 onClick 事件调用异步任务

public void sendMessage(View view){

String s1, s2;

s1 = user.getText().toString();
s2 = pass.getText().toString();


if ((s1.matches("")) || (s2.matches(""))) {
Toast.makeText(this, "Please fill out all fields.", Toast.LENGTH_SHORT).show();
} else {
//Intent intent = new Intent(this, com.example.studentpa.Dashboard.class);
//startActivity(intent);
pb.setVisibility(View.VISIBLE);
new MyAsyncTask().execute(s1);
}
}

最佳答案

我已经找到了问题的解决方案,请参阅所做更改的注释,这也是现在可以使用的代码。

public void loginMethod(View view) {
em = email.getText().toString();
ps = pass.getText().toString();

if (isConnected()) {
if (em.contains(" ") || ps.contains(" ")) {
Toast.makeText(getApplicationContext(), "No spaces are allowed in either field", Toast.LENGTH_SHORT).show();
} else if (em.matches("") || ps.matches("")) {
Toast.makeText(getApplicationContext(), "Please fill in all fields", Toast.LENGTH_SHORT).show();
} else {
pb.setVisibility(View.VISIBLE);
new MyAsyncTask().execute(em);

email.setEnabled(false);
pass.setEnabled(false);
}
} else {
Toast.makeText(getApplicationContext(), "You are not connected to the internet", Toast.LENGTH_SHORT).show();
}

}

private class MyAsyncTask extends AsyncTask<String, Integer, Double> {

@Override
protected Double doInBackground(String... params) {
postData(params[0]);
return null;
}

protected void onPostExecute(Double result) {
if (strResponse.isEmpty()){
Toast.makeText(getApplicationContext(), "We have no response from the server", Toast.LENGTH_LONG).show();
} else {
try {
jsonArray = new JSONArray(strResponse);
} catch (JSONException e){
e.printStackTrace();
}

JSONObject json;
json = null;
Integer success = 0;

for (int i=0; i<jsonArray.length(); i++)
{
json = null;
try {
json = jsonArray.getJSONObject(i);

success = json.getInt("success");
} catch (JSONException e) {
e.printStackTrace();
}
}

if (success == 1){
Toast.makeText(getApplicationContext(), "Login Successful", Toast.LENGTH_SHORT).show();
Intent intent = new Intent(getApplicationContext(), Dashboard.class);
startActivity(intent);
} else if (success == 0){
Toast.makeText(getApplicationContext(), "Incorrect Login Details", Toast.LENGTH_SHORT).show();
}

}

email.setEnabled(true);
pass.setEnabled(true);

pb.setVisibility(View.GONE);
}

protected void onProgressUpdate(Integer... progress) {
pb.setProgress(progress[0]);
}

public void postData(String s1) {
// Create a new HttpClient and Post Header
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://www.gbes.co.za");
HttpEntity entity;

try {
// Add your data
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("username", em));
nameValuePairs.add(new BasicNameValuePair("password", ps));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

// Execute HTTP Post Request
HttpResponse response = httpclient.execute(httppost);
entity = response.getEntity();
strResponse = EntityUtils.toString(entity);
} catch (HttpResponseException e) {
e.printStackTrace();
} catch (HttpHostConnectException e){
e.printStackTrace();
} catch (ClientProtocolException e){
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

}

}

编辑:

嘿伙计们,这是服务器代码:隐藏数据库连接以保护服务器

<?php
$uName=$_POST['username'];
$pWord=$_POST['password'];

$squl = "SELECT * FROM `usr` WHERE `uE`='".$uName."' && `uP`='".$pWord."' LIMIT 1";
$query = mysql_query($squl);
if (mysql_num_rows($query) == 1)
{
date_default_timezone_set('Africa/Johannesburg');

while($rows = mysql_fetch_array($query)){
$logincount=$rows['uLC'];
$logincount=$logincount + 1;
$uid=$rows['ID'];
}
$nowtime = date("Y-m-d H:i:s");
$loginsql = "UPDATE `users` SET `uLC`=$logincount, `uLL`='$nowtime'";
$query = mysql_query($loginsql);


$login_ok = true;
} else {
$login_ok = false;
}

if ($login_ok) {
$response["success"] = 1;
$response["message"] = "Login successful!";
die("[".json_encode($response)."]");
} else {
$response["success"] = 0;
$response["message"] = "Invalid Credentials!";
die("[".json_encode($response)."]");
}
mysql_close($db);

header('Content-Type: text/html; charset=utf-8');
?>

关于java - 使用帖子的登录表单只能使用一次?找不到错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24332395/

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