发送HTTP请求到PHP的Web服务器通过使用JSON,在ANDROID [英] sending HTTP request to PHP web server by using JSON, in ANDROID

查看:149
本文介绍了发送HTTP请求到PHP的Web服务器通过使用JSON,在ANDROID的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我希望一切都做得很好。 我想添加Web服务是Android应用程序,为了这个,我已经创建了PHP服务器。请求和响应是JSON甲。和请求类型是后 这是我的要求甲:

I hope all are doing well. I am trying to add web services to am Android application, for this I have created PHP server. request and response is in JSON formate. and request type is "post" this is my request formate:

{"method_name":"checkLogin","body":   {"username":"someone@some.com","password":"password","device_type":"android","lat":"","long":""}}

预期的响应:

expected Response:

[{"status":"1","message":"Login successfully","data":{"id":"xx","username":"someone@some.com","first_name":"xxx","last_name":"yyy","gender":"xxx","relationship":"xxxx","birthdate":"xxxx","hometown":"","major":null,"class":null,"house":null,"device_type":"iphone","current_location_lat":"0.0","current_location_lon":"0.0","profile_image":"no_male_user.png","is_login":"1","created":"2012","status":"1","tag":[{"id":"x","tag_name":"xxxx"},{"id":"x","tag_name":"xxx xxx"}]}}]

我的Andr​​oid code:

my android code:

userName = userNameField.getText().toString();
passWord = passWordField.getText().toString();

try {
JSONObject json = new JSONObject();
json.put("username", userName);
json.put("password", passWord);
json.put("device_type", "Android");
json.put("lat", "0.0");
json.put("long", "0.0");

JSONObject json1 = new JSONObject();
json1.put("method_name", "checkLogin");
json1.putOpt("body", json);

HttpParams httpParams = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpParams,
        TIMEOUT_MILLISEC);
HttpConnectionParams.setSoTimeout(httpParams, TIMEOUT_MILLISEC);
HttpClient client = new DefaultHttpClient(httpParams);

HttpPost request = new HttpPost(URL);
request.setEntity(new StringEntity(json1.toString()));
ResponseHandler<String> responseHandler = new BasicResponseHandler();
String response = client.execute(request, responseHandler);

Toast.makeText(this, response, Toast.LENGTH_LONG).show();

} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (Throwable t) {
Toast.makeText(this, "Request failed: " + t.toString(),
        Toast.LENGTH_LONG).show();
}
} 

main.php

main.php

<?php
require_once('configure.php');
require_once('db.php');
require_once("request.php");
require_once("error_msg.php");
require_once("./includes/JSON.php");

$json = $_POST['json'];

$objRequest = new Request($json);
$rows = $objRequest -> main();
echo $rows;
?>

request.php

request.php

<?php
require_once("./includes/JSON.php");
require_once("db.php");
require_once('SimpleImage.php');
class Request
{
function __construct($json)
{
    $this -> array1 = @json_decode(stripcslashes(trim($json)));
}
function main()
{
    $objDb = new DB();
    $conn = $objDb -> getConnection();

    if(!$conn)
        return Error :: $DB_CONN_ERROR." ".$DB_CONN_ERROR_DESC;
    else
    {
        if($this -> array1 -> method_name == 'checkLogin')
            return $this -> getLoginFlag($this -> array1 -> body);
    }
}
// For Login Start
function getLoginFlag($body)
{
    $username = trim($body -> username);
    $password = ($body -> password);
    $device_type = trim($body -> device_type);

    $this -> rs_login = DB :: selectLoginRecord($body);
    $arr_resp = array();
    $retArray = array();
    $tagListArray = array();
    if(mysql_num_rows($this -> rs_login) > 0)
    {
        while($rows = mysql_fetch_array($this -> rs_login))
        {
                $arr_resp = array("id"=> $rows['id'],"username"=> $rows['username'],"first_name"=> ucfirst($rows['first_name']),"last_name"=>ucfirst($rows['last_name']),"gender"=>$rows['gender'],"relationship"=>$rows['relationship'],"birthdate"=>date('M d, Y', strtotime($rows['birthdate'])),"hometown"=>$rows['hometown'],"major"=>$rows['major'],"class"=>$rows['class'],"house"=>$rows['house'],"device_type"=>$rows['device_type'],"current_location_lat"=>$rows['current_location_lat'],"current_location_lon"=>$rows['current_location_lon'],"profile_image"=>$rows['profile_image'],"is_login"=>$rows['is_login'],"created"=>date('Y', strtotime($rows['created'])),"status"=>$rows['status']);   
        }
        $this -> rs_tag_list = DB :: selectTagList($arr_resp['id']);
        if(mysql_num_rows($this -> rs_tag_list) > 0)
        {   
            while($rows = mysql_fetch_array($this -> rs_tag_list))
            {
                $tagListArray['tag'][]= array("id"=> $rows['id'],"tag_name"=> $rows['tag_name']);   
            }
        }

        $finalArray = array_merge($arr_resp,$tagListArray);
        $retArray[] = array("status"  => "1","message" => "Login successfully","data" => $finalArray);
    }
    else
    {
        $retArray[] = array("status" => "0","message" => "The username or password you entered is incorrect");  
    }

    return json_encode($retArray);
}
// End Login

}

?>

不过,我收到预期的响应空响应,而不是 可以请你帮我如何做到这一点, 感谢您的帮助

But I am getting empty response instead of expected response can you please help me how to do this, thank you for your help

推荐答案

使用code

List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
nameValuePairs.add(new BasicNameValuePair("json", Json1.toString()));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

request.setEntity(new StringEntity(json1.toString()));

这篇关于发送HTTP请求到PHP的Web服务器通过使用JSON,在ANDROID的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆