gpt4 book ai didi

php - Android和PHP codeigniter连接的简单代码

转载 作者:行者123 更新时间:2023-11-29 05:28:11 25 4
gpt4 key购买 nike

我有一个应用程序可以将姓名和密码从 Android 发送到 PHP。

我的安卓代码:

package com.example.com.tourism;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONException;
import org.json.JSONObject;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
public class SignUp extends Activity{
EditText first,last,birth ,pass;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.sign_up);

Button signUp=(Button)findViewById(R.id.sign_up);

first =(EditText) findViewById(R.id.edfname);
last =(EditText) findViewById(R.id.edlname);
pass =(EditText) findViewById(R.id.edpass);



signUp.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
String firstn = first.getText().toString();
String lastn = last.getText().toString();
String passw = pass.getText().toString();
try {
JSONObject json = new JSONObject();
json.put("first_name", firstn);
json.put("last_name", lastn);
json.put("password", passw);
postData(json);
} catch (JSONException e) {
e.printStackTrace();
}

}

});

}

public void postData(JSONObject json) throws JSONException {
HttpClient httpclient = new DefaultHttpClient();

try {
HttpPost httppost = new HttpPost("http://10.0.0.2:3784/tourism/index.php/site/register");

List<NameValuePair> nvp = new ArrayList<NameValuePair>(2);
nvp.add(new BasicNameValuePair("json", json.toString()));
//httppost.setHeader("Content-type", "application/json");
httppost.setEntity(new UrlEncodedFormEntity(nvp));
HttpResponse response = httpclient.execute(httppost);

if(response != null) {
InputStream is = response.getEntity().getContent();
//input stream is response that can be shown back on android
}

}catch (Exception e) {
e.printStackTrace();`enter code here`
}
}

}

在php codeigniter Controller 中接收前置信息的函数是

function register_get()
{
$json = array('status' => false );
if($this->input->post()==null){
$this -> response($json, 200);
}

$firstname = $this->post("first_name");
$lastname = $this->post("last_name");
$password = $this->post("password");
if(!$firstname || !$lastname || !$password){
$json['status'] = "wrong insert";
$this -> response($json, 200);
}

$this->load->model('Data_model');
$result = $this->Data_model->search($firstname, $lastname);

if($result)
{
$this->Data_model->insert($firstname,$lastname,$password);
$json['status'] = true;

}
// here if false..
$this -> response($json, 200);
}

我尝试了 PHP 代码并且它有效我认为问题来自 android 但我不知道它在哪里,任何人都可以帮助我吗???

最佳答案

您已经创建了 WebService,它在 POST 变量中接受请求并以 JSON 格式给出响应。

我给你举个例子。

CodeIgniter 中 Controller 的完整代码:

class info_control extends CI_Controller {

//consrtuctor
public function __construct()
{
parent::__construct();
/*
load you helper library
*/
/*
load you model
*/

$this->load->library('form_validation');
}

function register_get()
{
/* What you have done that i don't know */
/*
$json = array('status' => false );
if($this->input->post()==null){
$this -> response($json, 200);
}
*/

/* This is Form Validation */
$this->form_validation->set_rules('first_name', 'FirstName', 'valid_email|required');
$this->form_validation->set_rules('last_name', 'LastName', 'required');
$this->form_validation->set_rules('password', 'Password', 'required');

/* Here you mistake $this->post('post var')*/
$firstname = $this->input->post("first_name");
$lastname = $this->input->post("last_name");
$password = $this->input->post("password");

/** YOUR PROCESS for REGISTER **/
/*
LIKE
*/
if ($this->form_validation->run() == TRUE)
{
if(/* REGISTRATION SUCCESSFUL */)
{
$data = array('result' => 'success', 'msg' => 'Registered Successfully...');
}
else
{
$data = array('result' => 'error', 'msg' => 'Email Already Used or Invalid - Unable to Create Account' );
}
}
else
{
$data = array('result' => 'error','msg' => preg_replace("/[\n\r]/",".",strip_tags(validation_errors())));
}

echo json_encode($data);

/*
if(!$firstname || !$lastname || !$password){
$json['status'] = "wrong insert";
$this -> response($json, 200);
}

$this->load->model('Data_model');
$result = $this->Data_model->search($firstname, $lastname);

if($result)
{
$this->Data_model->insert($firstname,$lastname,$password);
$json['status'] = true;

}
// here if false..
$this -> response($json, 200);
*/
}

现在,在 Android 中,您必须发送如下数据:

    static InputStream is;
static String result;
static JSONObject jsonObject;

static HttpClient httpClient;
static HttpPost httpPost;

static List<NameValuePair> pairs;

static HttpResponse response;
static HttpEntity entity;

private static void init() {
// TODO Auto-generated constructor stub
is = null;
result = "";
jsonObject = null;
httpPost = null;
httpClient = new DefaultHttpClient();
}

private static String getResult(InputStream is) {
// TODO Auto-generated method stub
BufferedReader reader;
StringBuilder stringBuilder = null;

try {
reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8);

stringBuilder = new StringBuilder();
String line = null;

while ((line = reader.readLine()) != null) {
stringBuilder.append(line + "\n");
}
is.close();

} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return stringBuilder.toString();
}

//for Register Employee
public static JSONObject registerUser(String url, String firstNameString, String lastNameString, String passwordString) {
// TODO Auto-generated method stub
try{
init();

Log.d("msg", "URL : "+url);
httpPost = new HttpPost(url.toString());

Log.d("msg", "post : "+httpPost);

pairs = new ArrayList<NameValuePair>();

pairs.add(new BasicNameValuePair("firstname", firstNameString));
pairs.add(new BasicNameValuePair("lastname", lastNameString));
pairs.add(new BasicNameValuePair("password", passwordString));

httpPost.setEntity(new UrlEncodedFormEntity(pairs,HTTP.UTF_8));

Log.d("msg", "httppost : "+httpPost.toString());

response = httpClient.execute(httpPost);

Log.d("msg", "res : "+response.getStatusLine().getStatusCode());

entity = response.getEntity();

is = entity.getContent();

Log.d("msg", ""+is);
/*//** Convert response to string **/
result = getResult(is);

jsonObject = new JSONObject(result);
Log.d("msg", "jsonObj : "+jsonObject);
}
catch(ClientProtocolException e){
Log.e("log_tag", "Error in Client Protocol : "+e.toString());
}catch(JSONException e){
Log.e("log_tag", "Error Parsing data "+e.toString());
}catch(Exception e){
Log.e("log_tag", "Error in HTTP Connection : "+e.toString());
}
return jsonObject;
}

关于php - Android和PHP codeigniter连接的简单代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17587372/

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