djnago与Android实现本地连接

使用到的开发工具有:eclipse、pycharm2019、夜神模拟器

 

djnago与本地的Android进行连接时,和微信小程序的连接不一样,使用微信小程序开发的过程中需要使用127.0.0.1 作为本机地址,而用Android与djnago连接时要使用当前本机的地址。具体操作如下。

1、新建一个djnago项目,并对djnago中 的setting.py进行修改

这一步是让所有的ip进行访问,也可以只限制几个ip进行访问

 

2、对Django的启动的配置

将这里修改为0.0.0.0,0.0.0.0表示对监听在本机的所有IP地址上,通过任何一个IP地址都可以访问到。

 

3、查看自己的ip地址

 

4、在eclipse开发上,填写要访问的路径

urls="http://xxx:8000/test"

xxx:表示第三步你查询到自己主机上的ip地址

test:为你要访问的djnagourl上面的路由名称

 

5、完成上面的配置后代码如下

前端代码

private void StartRequest() {
        // 网络连接判断
        ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
        final NetworkInfo networkInfo = cm.getActiveNetworkInfo();
        // 新建线程
        new Thread() {
            public void run() {
                try {
                    if (networkInfo.isAvailable()) {
                        Log.e("tag", "1231232312");
                        //向网络端发送数据               

                      SendRequest();
                    } else {
                        Toast.makeText(getApplicationContext(), "亲,您还没有联网了!", 0)
                                .show();
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }.start();
    }

private void SendRequest() {
        String ServerUrl = "http://xxx:8000/test";//第四步的url
        // 通过HttpClient类与WEB服务器交互
        HttpClient httpClient = new DefaultHttpClient();
        // 定义与服务器交互的地址
        // 设置读取超时,注意CONNECTION_TIMEOUT和SO_TIMEOUT的区别
        httpClient.getParams().setParameter(
                CoreConnectionPNames.CONNECTION_TIMEOUT, 5000);
        // 设置读取超时
        httpClient.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT,
                5000);
        // POST方式
        HttpPost httpRequst = new HttpPost(ServerUrl);
        // 准备传输的数据
        List<BasicNameValuePair> params = new ArrayList<BasicNameValuePair>();

        params.add(new BasicNameValuePair("userid", "123"));//你要传递的数据
        params.add(new BasicNameValuePair("password", "123"));

        try {
            // 发送请求
            httpRequst.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8));
            // 得到响应
            HttpResponse response = httpClient.execute(httpRequst);
            // 返回值如果为200的话则证明成功的得到了数据
            if (response.getStatusLine().getStatusCode() == 200) {
                StringBuilder builder = new StringBuilder();
                // 将得到的数据进行解析
                BufferedReader buffer = new BufferedReader(
                        new InputStreamReader(response.getEntity().getContent()));
                // readLine()阻塞读取
                for (String s = buffer.readLine(); s != null; s = buffer
                        .readLine()) {
                    builder.append(s);
                }

                System.out.println(builder.toString());
                // 得到Json对象
                JSONObject jsonObject = new JSONObject(builder.toString());

                // 通过得到键值对的方式得到值
                String msg = jsonObject.getString("msg");

                Log.e(“返回的值为”,msg);

                 } else {
                Log.e(TAG, "连接超时 ");
            }
        } catch (Exception e) {
            e.printStackTrace();
            Log.e(TAG, "请求错误 ");
            Log.e(TAG, e.getMessage());
        }
        return;
    }

后台代码:

def test(request):
    if request.method == 'POST':
        userid = request.POST.get('userid')  # 用户id
        password=request.POST.get('password')
        print(userid+"===="+password)
       # result={'msg':'userinfo','userid':userid,'password':password,'username':"消耗",'sex':"男",
       #         'age':"21",'idiograph':"哈哈哈哈多付多付",'hobby':"111",'socialIdentity':"111"}#用户存在
        if result:#用户存在 true
            return HttpResponse(json.dumps({'msg':'ok'}))
        else:
            return HttpResponse(json.dumps({'msg':'the send message error'}))

启动服务器用即可进行访问。

注:若还有在这个项目上进行网页开发,进行本地测试时,要用 http://127.0.0.1:8000/test进行访问。而不是 http://0.0.0.0:8000/test

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值