Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Java使用REST/JSON登录到Sugar CRM CE_Java_Json_Rest_Sugarcrm_Resttemplate - Fatal编程技术网

从Java使用REST/JSON登录到Sugar CRM CE

从Java使用REST/JSON登录到Sugar CRM CE,java,json,rest,sugarcrm,resttemplate,Java,Json,Rest,Sugarcrm,Resttemplate,我尝试使用以下代码通过JSON/REST登录到sugar crm: private String doLogin(String endpointUrl, String username, String password) { Map payload = createLoginData(username, password); String url = "http://{endpointUrl}"; URI expanded = new UriTemplate(url).e

我尝试使用以下代码通过JSON/REST登录到sugar crm:

private String doLogin(String endpointUrl, String username, String password) {
    Map payload = createLoginData(username, password);
    String url = "http://{endpointUrl}";
    URI expanded = new UriTemplate(url).expand(endpointUrl);

    try {
        url = URLDecoder.decode(expanded.toString(), "UTF-8");

    } catch (Exception e) {

        e.printStackTrace();
    }

    String response = template.postForObject(url, payload, String.class);
... }

私有映射createLoginData(字符串用户名、字符串密码){
映射用户_auth=new HashMap();
用户授权放置(“用户名称”,用户名);
用户授权输入(“密码”,密码);
Gson Gson=新的Gson();
映射输入_data=newhashmap();
Map rest_data=new HashMap();
rest\u data.put(“user\u auth”,user\u auth);
输入数据。输入(“方法”,“登录”);
input_data.put(“input_type”,“JSON”);
input_data.put(“response_type”、“JSON”);
input_data.put(“rest_data”,gson.toJson(rest_data));
返回输入数据;
}

但是,服务器没有成功登录,而是以字符串形式返回php脚本(端点)的soruce代码。任何想法,我做错了什么?

以下代码解决了问题:

HttpEntity request = createLoginRequest(username, password);
String response = template.postForObject(url, request, String.class);

private HttpEntity<MultiValueMap<String, String>> createLoginRequest(String username, String password){
    MultiValueMap<String, String> requestMap = new LinkedMultiValueMap<String, String>();
    requestMap.add("method", "login");
    requestMap.add("input_type", "JSON");
    requestMap.add("response_type", "JSON");
    Map<String, Object> user_auth = new HashMap<String, Object>();
    user_auth.put("user_name", username);
    user_auth.put("password", password);
    Map<String, Object> rest_data = new HashMap<String, Object>();
    rest_data.put("user_auth", user_auth);
    Gson gson = new Gson();
    requestMap.add("rest_data", gson.toJson(rest_data));
    HttpHeaders headers = new HttpHeaders();
    headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
    HttpEntity<MultiValueMap<String, String>> request = new HttpEntity<MultiValueMap<String, String>>(requestMap, headers);
    return request;
}
HttpEntity请求=createLoginRequest(用户名、密码);
String response=template.postForObject(url、请求、String.class);
私有HttpEntity createLoginRequest(字符串用户名、字符串密码){
MultiValueMap requestMap=新链接的MultiValueMap();
添加(“方法”、“登录”);
add(“input_type”,“JSON”);
add(“response_type”、“JSON”);
映射用户_auth=new HashMap();
用户授权放置(“用户名称”,用户名);
用户授权输入(“密码”,密码);
Map rest_data=new HashMap();
rest\u data.put(“user\u auth”,user\u auth);
Gson Gson=新的Gson();
add(“rest_数据”,gson.toJson(rest_数据));
HttpHeaders=新的HttpHeaders();
headers.setContentType(MediaType.APPLICATION\u FORM\u URLENCODED);
HttpEntity请求=新的HttpEntity(请求映射,标题);
返回请求;
}

那么您的问题与不正确的Apache(?)/PHP设置有关。否。主要问题是缺少错误消息。如果使用Chromes DEV HTTP客户端创建请求,则登录成功。
HttpEntity request = createLoginRequest(username, password);
String response = template.postForObject(url, request, String.class);

private HttpEntity<MultiValueMap<String, String>> createLoginRequest(String username, String password){
    MultiValueMap<String, String> requestMap = new LinkedMultiValueMap<String, String>();
    requestMap.add("method", "login");
    requestMap.add("input_type", "JSON");
    requestMap.add("response_type", "JSON");
    Map<String, Object> user_auth = new HashMap<String, Object>();
    user_auth.put("user_name", username);
    user_auth.put("password", password);
    Map<String, Object> rest_data = new HashMap<String, Object>();
    rest_data.put("user_auth", user_auth);
    Gson gson = new Gson();
    requestMap.add("rest_data", gson.toJson(rest_data));
    HttpHeaders headers = new HttpHeaders();
    headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
    HttpEntity<MultiValueMap<String, String>> request = new HttpEntity<MultiValueMap<String, String>>(requestMap, headers);
    return request;
}