Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.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 [Android]-使用HttpUrlConnection发布Json_Java_Android_Json_Httpurlconnection - Fatal编程技术网

Java [Android]-使用HttpUrlConnection发布Json

Java [Android]-使用HttpUrlConnection发布Json,java,android,json,httpurlconnection,Java,Android,Json,Httpurlconnection,当我用python脚本向这个服务器发送请求时,我为我的应用程序构建了一个服务器端,它工作得很好,但在我的应用程序中它不工作 服务器: 服务器包含一个数据库。当我发送一个JSON{“name”:“your_name”}时,服务器将名称保存在数据库中 应用程序(Android): @覆盖 创建时受保护的void(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activit

当我用python脚本向这个服务器发送请求时,我为我的应用程序构建了一个服务器端,它工作得很好,但在我的应用程序中它不工作

服务器:

服务器包含一个数据库。当我发送一个JSON
{“name”:“your_name”}
时,服务器将名称保存在数据库中

应用程序(Android):

@覆盖
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
buttonSend=(按钮)findViewById(R.id.Button\u send);
buttonSend.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
AsyncTaskRunner postReq=新建AsyncTaskRunner();
postReq.execute(“启动”);
}
});
}
私有类AsyncTaskRunner扩展了AsyncTask{
@凌驾
受保护的字符串doInBackground(字符串…参数){
试一试{
String url=“我的url”;
URL对象=新URL(URL);
HttpURLConnection con=(HttpURLConnection)对象。openConnection();
con.设置输出(真);
con.setDoInput(真);
con.setRequestProperty(“内容类型”,“应用程序/json;字符集=UTF-8”);
con.setRequestMethod(“POST”);
JSONObject cred=新的JSONObject();
信用卡(“姓名”、“我的名字”)
OutputStream os=con.getOutputStream();
写(cred.toString().getBytes(“UTF-8”);
os.close();
}
捕获(例外e){
Log.v(“ErrorAPP”,例如toString());
}
返回“”;
}
@凌驾
受保护的void onPostExecute(字符串s){
super.onPostExecute(s);
}
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();
}
@凌驾
受保护的void onProgressUpdate(字符串…值){
super.onProgressUpdate(值);
}
}
在我运行此应用程序的手机中,我嗅探数据,发现应用程序向服务器发送请求,但数据包不包含json,我解决了它

更改:

OutputStream os = con.getOutputStream();
         os.write(cred.toString().getBytes("UTF-8"));
         os.close();
致:


您必须使用Jackson将json写入字符串。OutputStream os=con.getOutputStream();ObjectWriter writer=getMapper().writer();字符串jsonObject=writer.writeValueAsString(请求);写操作系统(jsonObject);看看这个:为什么和杰克逊在一起?那是什么???@Sayem我就是这么做的,但它不起作用…你打电话后有没有记录?哦,我的天!真管用!几天来,我一直在为这件事焦头烂额,被400码卡住了。谢谢
OutputStream os = con.getOutputStream();
         os.write(cred.toString().getBytes("UTF-8"));
         os.close();
DataOutputStream localDataOutputStream = new DataOutputStream(con.getOutputStream());
            localDataOutputStream.writeBytes(cred.toString());
            localDataOutputStream.flush();
            localDataOutputStream.close();