用php&;sql server 2008
我正在尝试通过Codeigniter使用android创建一个简单的登录(我刚刚学会)。 当我在android emulator中运行它时(来自android studio)。表单显示,但当我输入并按用php&;sql server 2008,php,android,codeigniter,Php,Android,Codeigniter,我正在尝试通过Codeigniter使用android创建一个简单的登录(我刚刚学会)。 当我在android emulator中运行它时(来自android studio)。表单显示,但当我输入并按Login时,显示此消息 我的简单登录一直停止 这是从我的事件日志中删除的 晚上9:03:21执行任务:[:app:assembleDebug]晚上9:03:22渐变 建造在904ms内完成 E/AndroidRuntime:致命异常:主 进程:com.example.boby.myapplicat
Login
时,显示此消息
我的简单登录一直停止
这是从我的事件日志中删除的
晚上9:03:21执行任务:[:app:assembleDebug]晚上9:03:22渐变
建造在904ms内完成
E/AndroidRuntime:致命异常:主
进程:com.example.boby.myapplication,PID:13020
android.os.NetworkOnMainThreadException
在android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork上(StrictMode.java:1303)
位于java.net.Inet6AddressImpl.lookupHostByName(Inet6AddressImpl.java:86)
在java.net.Inet6AddressImpl.lookupAllHostAddr(Inet6AddressImpl.java:74)
位于java.net.InetAddress.getAllByName(InetAddress.java:752)
位于com.android.okhttp.internal.Network$1.resolveInetAddresses(Network.java:29)
位于com.android.okhttp.internal.http.RouteSelector.resetNextInetSocketAddress(RouteSelector.java:187)
在com.android.okhttp.internal.http.RouteSelector.nextProxy上(RouteSelector.java:156)
在com.android.okhttp.internal.http.RouteSelector.next(RouteSelector.java:98)上
位于com.android.okhttp.internal.http.HttpEngine.createNextConnection(HttpEngine.java:345)
位于com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:328)
位于com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:246)
位于com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:457)
位于com.android.okhttp.internal.huc.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:126)
位于com.android.okhttp.internal.huc.HttpURLConnectionImpl.getOutputStream(HttpURLConnectionImpl.java:257)
位于com.example.boby.myapplication.MainActivity.goLogin(MainActivity.java:72)
在com.example.boby.myapplication.MainActivity$1.onClick(MainActivity.java:49)上
在android.view.view.performClick上(view.java:5637)
在android.view.view$PerformClick.run(view.java:22429)
位于android.os.Handler.handleCallback(Handler.java:751)
位于android.os.Handler.dispatchMessage(Handler.java:95)
位于android.os.Looper.loop(Looper.java:154)
位于android.app.ActivityThread.main(ActivityThread.java:6119)
位于java.lang.reflect.Method.invoke(本机方法)
在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)上
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
这是我的剧本
package com.example.boby.myapplication;
import android.content.Context;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final Button Login = (Button) findViewById(R.id.buttonLogin);
final EditText username = (EditText) findViewById(R.id.UsernameID);
final EditText password = (EditText) findViewById(R.id.PasswordID);
Login.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
final Button Login = (Button) findViewById(R.id.buttonLogin);
final EditText username = (EditText) findViewById(R.id.UsernameID);
final EditText password = (EditText) findViewById(R.id.PasswordID);
String usernametext = username.getText().toString();
String passwordtext = password.getText().toString();
Context context = getApplicationContext();
String text = "";
if(usernametext.equals("") || passwordtext.equals(""))
{
text = "All Field required !!!";
int duration = Toast.LENGTH_SHORT;
Toast toast = Toast.makeText(context, text, duration);
toast.show();
}else{
goLogin(usernametext,passwordtext);
}
}
});
}
protected void goLogin(String username, String password){
HttpURLConnection connection;
OutputStreamWriter request = null;
String parameters = "username="+username+"&password="+password;
URL url = null;
int duration = Toast.LENGTH_SHORT;
String response;
try{
url = new URL("http://localhost/api/login/proses");
connection = (HttpURLConnection) url.openConnection();
connection.setDoOutput(true);
connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
connection.setRequestMethod("POST");
request = new OutputStreamWriter(connection.getOutputStream());
request.write(parameters);
request.flush();
request.close();
String line = "";
InputStreamReader isr = new InputStreamReader(connection.getInputStream());
BufferedReader reader = new BufferedReader(isr);
StringBuilder sb = new StringBuilder();
while ((line = reader.readLine()) != null)
{
sb.append(line + "\n");
}
response = sb.toString();
Toast toast = Toast.makeText(this, response, duration);
toast.show();
isr.close();
reader.close();
}
catch(IOException e)
{
Toast toast = Toast.makeText(this, "Error \n"+e, duration);
toast.show();
}
}
}
这是我的密码点火器
class Login extends CI_Controller {
public function proses()
{
$username = $this->input->post("username");
$password = $this->input->post("password");
$result = $this->Modelmodel->check($username,$password);
json_encode($result);
}
}
class Modelmodel extends CI_Model {
public function check($username,$password)
{
return $this->db->query("select * from user where username = '".$username."' and password = '".$password."' ")->row();
}
}
对不起,我的英语不好学英语吧。您发布的消息与实际问题无关。简单看一下:您不能在主线程上执行网络操作。你需要使用一种新的方法。有关更多信息,请参阅。谢谢,现在我看到了错误,请学习如何。您发布的消息与实际问题无关。简单看一下:您不能在主线程上执行网络操作。你需要使用一种新的方法。有关更多信息,请参阅。谢谢,现在我看到了错误