手机App通过http协议从web服务器上获取json格式的数据

本文档描述了如何创建一个Android应用,该应用利用HTTP协议从本地Web服务器获取JSON格式的数据并显示。通过在XAMPP上部署PHP服务器,设置端口,然后在Android Studio中编写代码,实现点击按钮后获取并解析数据,最终在手机界面上显示。

    本实验制作了一个手机app,该app通过http协议从web服务器上获取json格式的数据并显示。测试用的手机和web服务器在同一个wifi网络中,手机的IP地址为192.168.1.3,web服务器搭建在一个笔记本电脑上,IP地址为192.168.1.2。

 

一、搭建web服务器,步骤如下:

    1.下载安装xampp(本机装在D:\xampp下)。

    2.由于端口往往有冲突,所以需要对服务器使用的端口进行重新设置。打开  D:\xampp\apache\conf\httpd.conf文件,将Listen 80改成Listen 8888,将ServerName localhost:80 改成ServerName192.168.1.2:8888。这里192.168.1.2是笔记本电脑在wifi网络中的IP地址(在command窗口用ipconfig命令查看无线适配器的IP地址),因为app一会要在手机上测试,所以这里直接用IP地址,而不是localhost。

    3.打开D:\xampp\apache\conf\extra\ httpd-ssl.conf文件,将Listen443改成 Listen 888。

    4.打开xampp control panel,start apche服务器。在浏览器中输入:http://192.168.1.2:8888,如果能看见Xampp的欢迎界面,就说明服务器安装正常。


二、在D:\xampp\htdocs\forandroid目录下创建一个php文件如下

   <?php

       $arr= array ('a'=>'dd','b'=>'gg','c'=>'kk','d'=>'pp','e'=>'tt');

       echojson_encode($arr);

   ?>

   该文件返回jason格式的数据:{"a":"dd","b":"gg","c":"kk","d":"pp","e":"tt"}。

 

三、在Android studio中创建一个新的project,在主活动的页面上放置一个button和一个textview,当点击button时,向web 服务器发送http请求(请求上面创建的php文件),并对返回的json数据进行解析和显示(只显示了其中一个值)。代码如下:

  
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
    private TextView responseText;
     @Override
     protected voidonCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
        setContentView(R.layout. activity_main);
        Button sendRequest =(Button)findViewById(R.id. send_request);
         responseText= (TextView)findViewById(R.id. textView);
        sendRequest.setOnClickListener( this);
    }
     @Override
     public void onClick(Viewv) {
         if(v.getId()==R.id. send_request)
        {
           sendRequestWithHttpURLConnection();
        }
    }
     private voidsendRequestWithHttpURLConnection()
    {
         new Thread( new Runnable()
        {
             public voidrun(){
                 try{
                    OkHttpClient client = newOkHttpClient();
                Request request = newRequest.Builder().url( "http://192.168.1.2:8888/forandroid/ jsontest.php").build();
                    Response response =client.newCall(request).execute();
                    String responseData =response.body().string();
                   parseJSONWithJSONObject(responseData);
                } catch(Exception e) {
                   e.printStackTrace();
                }
            }
        }).start();
    }
     private voidparseJSONWithJSONObject(String jsonData)
    {
         try{
            JSONObject jsonObject = newJSONObject(jsonData);
             finalString  str = jsonObject.getString( "c");
             runOnUiThread( newRunnable(){
                 @Override
                 public voidrun() {
                     responseText.setText( str);
                }
            });
        } catch (Exceptione){
            e.printStackTrace();
        }
    }
}

 

四、运行该app,在手机上显示界面后,点击button,则在textview中显示“kk”。

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值