Java 将json发布到webservice时Android发送空参数
请帮助我,我在使用HttpUrlConnection类以JSON对象作为参数体发送POST请求时遇到问题。我一直在寻找同样的问题,我尝试了解决方案,但没有一个适合我的情况。这是我的代码(我在AsyncTask类中调用此方法):` 下面是我调用上述方法的代码:Java 将json发布到webservice时Android发送空参数,java,android,json,web-services,httpurlconnection,Java,Android,Json,Web Services,Httpurlconnection,请帮助我,我在使用HttpUrlConnection类以JSON对象作为参数体发送POST请求时遇到问题。我一直在寻找同样的问题,我尝试了解决方案,但没有一个适合我的情况。这是我的代码(我在AsyncTask类中调用此方法):` 下面是我调用上述方法的代码: try{ JSONObject jsParam=new JSONObject(); jsParam.put("method", URLEncoder.encode("check","UTF-8")); JSONObject jsR
try{
JSONObject jsParam=new JSONObject();
jsParam.put("method", URLEncoder.encode("check","UTF-8"));
JSONObject jsResponse=postData(myUrl,jsParam);
} catch (Exception e){
e.printStackTrace;
} finally{
if(jsObj==null){
Log.d("NullJson","Yes, jsObj return null");
} else {
Log.d("ValidResponse",jsObj.toString());
}
}
当此请求从android应用程序发布时,所述请求正文包含的web服务响应始终为空消息。但是,当我使用Postman客户端发送它时,web服务会响应有效消息。下面是我的邮递员代码:
POST /mro/public/index.php? HTTP/1.1
Host: mro.alfamartku.com
Content-Type: application/x-www-form-urlencoded;
Cache-Control: no-cache
Postman-Token: 25463d97-b821-7016-d3e7-5e256d69a31a
key={"method":"check"}
你错过的部分在下面。。。i、 e.如下:
// Send POST output.
printout = new DataOutputStream(urlConn.getOutputStream ());
printout.write(URLEncoder.encode(jsonParam.toString(),"UTF-8"));
printout.flush ();
printout.close ();
剩下的事情你可以做。发布你的logcat错误它没有在应用程序中引发错误。应用程序成功向web服务发布请求,但它返回无效消息(在我的情况下,post body是空字符串),并给出响应“错误的方法”。根据API文档,我的文章正文完全相同(并且正确)。我已经检查并确保post不包含新的换行符。在我比较了您的代码和post man客户端生成的代码结果之后。我错过了
.setRequestProperty(“主机”、“someHostName”)部分代码>。非常感谢你的解决方案,它对我有用。
URL url;
URLConnection urlConn;
DataOutputStream printout;
DataInputStream input;
url = new URL (getCodeBase().toString() + "env.tcgi");
urlConn = url.openConnection();
urlConn.setDoInput (true);
urlConn.setDoOutput (true);
urlConn.setUseCaches (false);
urlConn.setRequestProperty("Content-Type","application/json");
urlConn.setRequestProperty("Host", "android.schoolportal.gr");
urlConn.connect();
//Create JSONObject here
JSONObject jsonParam = new JSONObject();
jsonParam.put("ID", "25");
jsonParam.put("description", "Real");
jsonParam.put("enable", "true");
// Send POST output.
printout = new DataOutputStream(urlConn.getOutputStream ());
printout.write(URLEncoder.encode(jsonParam.toString(),"UTF-8"));
printout.flush ();
printout.close ();