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

    本实验制作了一个手机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”。

    原文作者:bufanq
    原文地址: https://blog.csdn.net/bufanq/article/details/64923139
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞