1.登 录

智能商业产品支持-1发表于:2016年06月24日 10:55:53更新于:2018年02月02日 15:27:16

package koalacam;

import org.apache.http.client.CookieStore;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.protocol.HttpClientContext;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.json.JSONObject;

/** 
* 登录 
* @author Wangshutao 
* 2016年7月4日 
*/
public class LoginAuth {

    /**
    * 登录 获取 Cookie
    * @param url API地址
    * @param username 账号, 注意不要使用admin@megvii.com
    * @param password 密码
    * @return cookie CookieStore
    * @throws Exception 
    */
    public static CookieStore authLogin(String url,String username,String password) throws Exception {
        System.out.println("Start /auth/login to ...");
        CloseableHttpClient httpclient = HttpClients.createDefault();
        HttpPost request = new HttpPost(url);
        
        //设置user-agent为 "Koala Admin" 
        //设置Content-Type为 "application/json"
        request.setHeader("User-Agent", "Koala Admin");
        request.setHeader("Content-Type", "application/json");
        
        JSONObject json = new JSONObject();
        json.put("username", username);
        json.put("password", password);
        
        request.setEntity(new StringEntity(json.toString(), "UTF-8"));
        
        //发起网络请求,获取结果值
        HttpClientContext context = HttpClientContext.create();
        CloseableHttpResponse response = httpclient.execute(request, context);    
        String responseBody = EntityUtils.toString(response.getEntity(), "UTF-8");
        
        //解析JSON数据
        JSONObject resp = new JSONObject(responseBody);
        int result = resp.optInt("code", -1);
        if (result != 0) {
            System.err.println("Login failed, code:" + result);
        }else{
            System.out.println("Login Success,id:" + resp.getJSONObject("data").getInt("id"));
            return  context.getCookieStore();
        }
        return null;
    }
}

此示例代码返回对象 CookieStore ,API相关JAVA版示例代码中的参数cookieStore都来自于此。

        common.py

#! encoding=utf-8
#在线版服务器API地址为: https://v2.koalacam.net
#离线版API地址为: http://主机ip 
HOST = ''
# 注意不要使用admin@megvii.com
USER = 'test@company.com' 
PASSWD = 'password'

LOCAL_HOST_IP = '192.168.1.50'
RTSP_URL = 'rtsp://192.168.1.10/user=admin&password=&channel=1&stream=0.sdp?'

        auth.py

#! encoding=utf-8

import requests
import json
from common import HOST, USER, PASSWD

class Login(object):

    def __init__(self, host, user, password):
        self.host = host
        self.user = user
        self.password = password
        self.session = self.init_session()

    def build_url(self, path):
        return self.host + path

    def init_session(self):
        session = requests.session()
        url = self.build_url('/auth/login')
        headers = {'User-Agent':'Koala Admin'}
        data = {'username': self.user, 'password': self.password}
        ret = session.post(url, data ,headers=headers).content
        data = json.loads(ret)
        if data['code'] == 0:
            print data['data']['id']
        elif data['code'] != 0:
            print data['code'],data['desc']
        return session

if __name__ == '__main__':
    Login(HOST,USER,PASSWD)


回复(18)

  • 138****0858
    打开浏览器,输入登录的ip地址,不跳转到登录界面,浏览器无反应!
  • 138****0858
    我这边现场两台三路的人脸识别服务器,之前做了级联,半年多以来一直正常运行,前几天突然发生浏览器进入不了服务器界面,经过多次测试都一样,火狐浏览器,qq浏览器,ie浏览器都试过了,都登录不进去,局域网网络确定没有问题,两台服务器都能ping通,不掉包,就是登录不了界面进行查看就人脸照片录入,比较紧急,请相关人员尽快给予帮助,尽快联系我:全先生 13802500858!
  • hunter

    用什么用户名称密码调试

  • api

    获取cookie之后, 后续接口怎样使用

  • zongze

  • 大妞妞粑粑

    android 报java.net.SocketException: Permission denied什么原因?

  • yaosetech

    我使用实例的Java代码之后,获得返回的Response:

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">

    <title>405 Method Not Allowed</title>

    <h1>Method Not Allowed</h1>

    <p>The method is not allowed for the requested URL.</p>


    同时使用postman post(已设置headers,使用application/json )提交json数据,然后得到返回值:

    {

        "code": -3001,

        "data": {},

        "desc": "验证码不正确"

    }


  • Eason
    $curl = 'http://192.168.16.50/auth/login';
    $data = array(
        'username'=>"***@megvii.com",
        'password'=>'******'
    );
    
    $postdata = json_encode($data);
    $header = array(
        "user-agent"=>"Koala Admin",
        "Content-Type: application/json;charset=utf-8"
    );
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $curl);
    curl_setopt($ch, CURLOPT_HEADER,0);
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
    curl_setopt($ch,CURLOPT_POSTFIELDS,$postdata);
    curl_setopt($ch, CURLOPT_HTTPHEADER,$header);
    curl_setopt($ch, CURLOPT_COOKIEJAR,  "D:/megivv/cookie/cookie.text");
    curl_setopt($ch, CURLOPT_COOKIEFILE, "D:/megivv/cookie/cookie.text");
    $result = curl_exec($ch);
    if($error=curl_error($ch)){
        die($error);
    }
    curl_close($ch);

    PHP请求登录 ,各位大神看看我写的有错吗?一直报错

    error:Failed to connect to 192.168.16.50 port 80: Connection timed out

  • 智能商业产品支持-1

    如果失效 浏览器会重定向到登录页 可以在catch部分做处理

    引用 张添 的回复:

    在其他地方引入cookie的时候,怎么判断cookie是否失效

  • 张添

    在其他地方引入cookie的时候,怎么判断cookie是否失效

  • 智能商业产品支持-1

    模拟浏览器 发起网络请求 携带cookie

  • zjg

    登录并获取cookie,后面所有的接口都需要在请求时带入此cookie


    请问后面的接口怎么使用该cookie?

  • 智能商业产品支持-1

    祝好!

    引用 Su Huan 的回复:

    问题解决了,谢谢你。

  • Su Huan

    问题解决了,谢谢你。

    引用 智能商业产品支持-1 的回复:

    Android端可以使用AsyncHttpClient

  • 智能商业产品支持-1

    如果是在线版 可以使用Android端SDK http://techsupport.megvii.com/hc/kb/article/181276/

  • 智能商业产品支持-1

    Android端可以使用

    AsyncHttpClient 或者 OkHttp3


  • Su Huan

    你好,这段java代码,在pc上运行是没有问题的。但是在android上运行是不行的,会报异常。我查了许多资料,说是andoird自带的包和apache的httpclients之间有某种冲突。请问你们在android上是如何解决这个问题的?

  • 智能商业产品支持-1
    POST/auth/login1.1 登录


您需要登录后才可以回复