Java 如何将json对象从Android应用程序发送到用C#编写的web服务?

Java 如何将json对象从Android应用程序发送到用C#编写的web服务?,java,c#,android,Java,C#,Android,我试图将一个json对象从Android代码发送到一个用C#编写的Web服务,但无法调用该Web服务。我已经设置了一个专用网络,运行webservice的系统和运行android代码的android手机都连接到了这个网络。为了检查webservice是否被调用,我在手机上安装了一个rest客户端并发布了一篇文章,webservice中的断点得到了成功。但当我尝试使用android代码时,我能够建立一个连接,当我编写json对象时,它会像正在编写一样等待。webservice中的断点从未受到and

我试图将一个json对象从Android代码发送到一个用C#编写的Web服务,但无法调用该Web服务。我已经设置了一个专用网络,运行webservice的系统和运行android代码的android手机都连接到了这个网络。为了检查webservice是否被调用,我在手机上安装了一个rest客户端并发布了一篇文章,webservice中的断点得到了成功。但当我尝试使用android代码时,我能够建立一个连接,当我编写json对象时,它会像正在编写一样等待。webservice中的断点从未受到android代码的影响。下面是我的android代码:


Collection items=new ArrayList();
JSONObject字段=新建JSONObject();
字符串base64String=Base64.encodeToString(图像以字节表示,
Base64(默认);
文件名=新文件(目录1+“/”+
getName());
字符串file_str=file.getName();
字段.put(“ID”,文件\u str);
字段。put(“标志”、“真”);
字段。put(“图像”,base64String);
输入(“类型”、“JPEG”);
项目。添加(字段);
UUID uid=UUID.randomUUID();
字符串u_String=uid.toString();
JSONObject temp=新的JSONObject();
温度输入(“字段1”,u_字符串);
温度输入(“字段2”、“ABCD”);
温度输入(“字段3”,项目);
HttpUrlRC连接;
String SERVER=“webservice url”;
URL=新URL(服务器);
rc=(HttpURLConnection)url.openConnection();
尝试
{
rc.设置输出(真);
rc.setDoInput(真);
rc.setUseCaches(假);
rc.setRequestMethod(“POST”);
rc.setRequestProperty(“连接”、“保持活动”);
setRequestProperty(“内容类型”,“应用程序/json;字符集=utf-8”);
setRequestProperty(“Accept”,“application/json;charset=utf-8”);
rc.setConnectTimeout(超时);
rc.setReadTimeout(0);
rc.connect();
OutputStream out=新的BufferedOutputStream(rc.getOutputStream());
out.write(temp.toString().getBytes());
out.flush();
out.close();
} 
捕获(例外e){
e、 printStackTrace();
}
最后
{
rc.disconnect();
}

rc.connect()似乎正在建立连接,因为rc中的“connected”字段为true。上面的temp是我想要发送给webservice的json对象,write操作等待,它似乎正在写入,但webservice从未命中。我不知道为什么它不起作用,非常感谢在这方面的任何帮助


谢谢。

用抽射。上面的示例是json文件???文件没有toString()方法。请显示相关代码。您在该catch块中没有常用代码。所以你不知道发生了什么。所以你也不能告诉我们。对不起,temp不是json文件。。这是一个json对象,我的错。。将放入相关代码。打开连接后执行的代码不会生成任何异常。当它执行写入操作时,会等待几秒钟,并成功执行out.flush和out.close。使用截击。上面的示例是json文件???文件没有toString()方法。请显示相关代码。您在该catch块中没有常用代码。所以你不知道发生了什么。所以你也不能告诉我们。对不起,temp不是json文件。。这是一个json对象,我的错。。将放入相关代码。打开连接后执行的代码不会生成任何异常。当它执行写入操作时,会等待几秒钟,并成功执行out.flush和out.close。。
            Collection<JSONObject> items = new ArrayList<JSONObject>();
            JSONObject field = new JSONObject();
            String base64String = Base64.encodeToString(image_in_byte, 
            Base64.DEFAULT);

            File filename = new File(Directory1 + "/" + 
            file.getName());
            String file_str = file.getName();

            field.put("ID", file_str);
            field.put("Flag", "true");
            field.put("Image", base64String);
            field.put("Type", "JPEG" );
            items.add(field);

            UUID uid = UUID.randomUUID();
            String u_string = uid.toString();

            JSONObject temp = new JSONObject();
            temp.put("field1", u_string);
            temp.put("field2", "ABCD");
            temp.put("field3", items);

            HttpURLConnection rc;
            String SERVER = "webservice url";
            URL url = new URL(SERVER); 

            rc = (HttpURLConnection)url.openConnection();
            try
            {
                rc.setDoOutput(true);
                rc.setDoInput(true);
                rc.setUseCaches(false);
                rc.setRequestMethod("POST"); 
                rc.setRequestProperty("Connection", "Keep-Alive");
                rc.setRequestProperty("Content-Type", "application/json; charset=utf-8");
                rc.setRequestProperty("Accept", "application/json; charset=utf-8");
                rc.setConnectTimeout(timeout); 
                rc.setReadTimeout(0); 
                rc.connect();
                OutputStream out = new BufferedOutputStream(rc.getOutputStream());
                out.write(temp.toString().getBytes());

                out.flush();
                out.close();
               } 
            catch (Exception e) {
                e.printStackTrace();
            }
            finally
            {
                rc.disconnect();
            }