来自android app的neo4j 401状态码

时间:2015-02-23 17:29:53

标签: android neo4j

我正在使用Graph Story neo4j服务器,我正在使用Android应用程序中的REST API。

我使用这样的网址https://uName:pass@host:port 这个相同的网址和我设置的http参数和标头在chrome Rest Client中工作,但是当我使用我的Android应用程序时,我从neo4j得到401状态错误。

从我的MainActivity中调用它:

            new RegisterRestTask().execute("https://GraphStoryUsername:GraphStoryPassword@GraphStoryNeo4jInstanceURL:7473/db/data/cypher");

这是我的AsyncTask代码:

public class RegisterRestTask extends AsyncTask<String,Void,String> {

@Override
protected String doInBackground(String... urls) {


    HttpClient httpClient=new DefaultHttpClient();

    HttpPost httpPost=new HttpPost(urls[0]);


    String json="{ \"query\":\"Match n return n\"} ";

    try {
        JSONObject postJsonObject=new JSONObject(json);
        StringEntity jsonEntity=new StringEntity(postJsonObject.toString(),"UTF-8");
        httpPost.setHeader("Accept", "application/json; charset=UTF-8");
        httpPost.setHeader("Content-type", "application/json");
        httpPost.setEntity(jsonEntity);

        //httpPost.setHeader("User-Agent","Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.111 Safari/537.36");
        HttpResponse httpResponse = httpClient.execute(httpPost);
        Log.e("response",Integer.toString(httpResponse.getStatusLine().getStatusCode()));


    }
    catch (Exception e)
    {
        e.printStackTrace();
    }




    return null;
}

}

1 个答案:

答案 0 :(得分:1)

401通常表示您需要传递凭据(而不是表示凭据被拒绝的403)。

Chrome会获取URL中的用户名/密码参数,并将其作为HTTP Basic Auth传递。它没有明确地发送它们。这是一个特殊的客户端功能(存在于许多客户端上)。您需要设置Android应用的HTTP请求以使用基本身份验证。

如果你展示你的Android代码,某人(也许是我自己)可以帮助你做出改变。