Hallo,
für mein Studium (Projektarbeit/Bachelorarbeit) habe ich die Aufgabe, eine Applikation für Android zu schreiben, mit der man auf die Datenbank i-doit zugreifen kann. Dies ist mein erstes Projekt im Bezug auf Android und JSON. Das Dokument mit der technischen Erläuterung der "i-doit JSON RPC API" hilft mir leider nur bedingt weiter. Ich versuche per HTTP Post auf die demo-Datenbank zuzugreifen, jedoch weiß ich nicht, in wiefern ich die params und den api-key bzw. Nick/PW einbinden soll. Ebenfalls weiß ich nicht, ob ich die richtige URL verwende, da ich ständig als Request-Objekt einen Text mit "400 Bad Request"-Nachricht bekomme.

Folgendermaßen sieht mein Code aus:
@Override
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_startscreen);
        //Aufruf der execute-Methode (Ist die übergebene URL  richtig?)
        new DownloadTextTask().execute("http://demo.i-doit.com/src/jsonrpc.php");
}
public InputStream OpenHttpPOSTConnection(String url){
        InputStream inputStream = null;
        HttpClient httpClient = new DefaultHttpClient();
        try{
            HttpPost httpPost = new HttpPost(url);
            // HTTP Post Header (Was muss alles per Header mitgegeben werden und stimmt die URL?)
            httpPost.addHeader("Host","http://demo.i-doit.com/src/jsonrpc.php");
            httpPost.addHeader("Content-Type", "application/json-rpc");
            httpPost.addHeader("X-RPC-Auth-Username","admin");
            httpPost.addHeader("X-RPC-Auth-Password","admin");
            // JSON Objekt mit Schlüsselwertpaaren (Sind die SWP vollständig und korrekt?)
            JSONObject json = new JSONObject();
            HashMap <string, string="">map = new HashMap();
            map.put("apikey","c1ia5q");
            map.put("objID","4438");
            map.put("catgID", "41");
            json.put("method","cmdb.category");
            json.put("version","2.0");
            json.put("id","1");
            json.put("params",map);
            // JSON Objekt an HTTP Post übergeben
            StringEntity params =new StringEntity(json.toString());
            httpPost.setEntity(params);
            HttpResponse httpResponse = httpClient.execute(httpPost);
            inputStream = httpResponse.getEntity().getContent();
        }catch(Exception e){
            Log.d("OpenHttpPOSTConnection", e.getLocalizedMessage());
        }finally {
            httpClient.getConnectionManager().shutdown();
        }
        return inputStream;
    }
    private String DownloadText(String URL){
        int BUFFER_SIZE = 2000;
        InputStream in = null;
        try{
            in = OpenHttpPOSTConnection(URL);
        }catch (Exception e){
            Log.d("Networking", e.getLocalizedMessage());
            return "";
        }
        InputStreamReader isr = new InputStreamReader(in);
        int charRead;
        String str = "";
        char[] inputBuffer = new char[BUFFER_SIZE];
        try{
            while ((charRead = isr.read(inputBuffer))>0){
                String readString = String.copyValueOf(inputBuffer, 0, charRead);
                str += readString;
                inputBuffer = new char[BUFFER_SIZE];
            }
            in.close();
        }catch (IOException e){
            Log.d("DownloadText", e.getLocalizedMessage());
            return "";
        }
        return str;
    }
    private class DownloadTextTask extends AsyncTask<string, void,="" string="">{
        protected String doInBackground(String... urls){
            return DownloadText(urls[0]);
        }
        @Override
        protected void onPostExecute(String result) {
            // Ausgabe des JSON-Objekts vom Server als String im Textfeld der Android-App
            EditText editText = (EditText)findViewById(R.id.editText_output);
            editText.setText(result);
        }
    }</string,></string,> 
Ich wäre sehr dankbar, wenn mir jemand zeigen könnte, wo meine Fehler liegen.