Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.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 如何将JSONObject发送到REST服务?_Java_Android_Json_Rest - Fatal编程技术网

Java 如何将JSONObject发送到REST服务?

Java 如何将JSONObject发送到REST服务?,java,android,json,rest,Java,Android,Json,Rest,从REST服务器检索数据效果很好,但如果我想发布对象,它就不起作用: public static void postJSONObject(int store_type, FavoriteItem favorite, String token, String objectName) { String url = ""; switch(store_type) { case STORE_PROJECT: url

从REST服务器检索数据效果很好,但如果我想发布对象,它就不起作用:

public static void postJSONObject(int store_type, FavoriteItem favorite, String token, String objectName) {
        String url = "";

        switch(store_type) {
            case STORE_PROJECT:
                url = URL_STORE_PROJECT_PART1 + token + URL_STORE_PROJECT_PART2; 
                //data = favorite.getAsJSONObject();
            break;
        }

        HttpClient httpClient = new DefaultHttpClient();
        HttpPost postMethod = new HttpPost(url);

        try {   
            HttpEntity entity = new StringEntity("{\"ID\":0,\"Name\":\"Mein Projekt10\"}");

            postMethod.setEntity(entity);

            HttpResponse response = httpClient.execute(postMethod);
            Log.i("JSONStore", "Post request, to URL: " + url);
            System.out.println("Status code: " + response.getStatusLine().getStatusCode());

        } catch (ClientProtocolException e) {
我总是得到400个错误码。有人知道怎么了吗

我有工作的C#代码,但无法转换:

 System.Net.WebRequest wr = System.Net.HttpWebRequest.Create("http://localhost:51273/WSUser.svc/pak3omxtEuLrzHSUSbQP/project");
            wr.Method = "POST";
            string data = "{\"ID\":1,\"Name\":\"Mein Projekt\"}";

            byte [] d = UTF8Encoding.UTF8.GetBytes(data);
            wr.ContentLength = d.Length;
            wr.ContentType = "application/json";

             wr.GetRequestStream().Write(d, 0, d.Length);
            System.Net.WebResponse wresp = wr.GetResponse();
            System.IO.StreamReader sr = new System.IO.StreamReader(wresp.GetResponseStream());
            string line = sr.ReadToEnd();

我会直接转到服务器错误日志或等效错误日志。服务器知道它拒绝您的请求的原因。如果您没有访问权限,请设置您自己的测试服务器,并在那里复制问题,以便您可以查看日志=)

您的C#与Java不同,不仅仅是语法不同

您的C#通过HTTP POST向服务器发送
应用程序/json
实体。至于使用POST(与PUT)是否合适,我将留给HTTP纯粹主义者来决定


Java创建了一个表单,其字段为
jsonString
(其值为JSON),并将
应用程序/x-www-form-urlencoded
实体发送到包含该表单的服务器

尝试设置内容类型标题:

addRequestHeader(“内容类型”、“应用程序/json”)


顺便说一句,我强烈推荐。它有一个休息区,这使这些事情变得更容易和更可读

我怀疑唯一能回答的人是编写Web服务的人。当状态为400时,请求正文中是否有任何内容?也许他们会回复一条错误消息,告诉你他们为什么给你400分。谢谢你的提示。我查一下。我还添加了一些代码,我知道它可以工作,但不幸的是它的C#[android defaulthttpclient post to service wcf svc][1][1]:[android defaulthttpclient post to service wcf svc][1][1]:谢谢。你的权利。我更新了我的java代码。但是我找不到如何创建application/json实体的参考