Java 在Android Studio中有没有一种方法可以通过Ajax发送多种类型的HashMap参数?

Java 在Android Studio中有没有一种方法可以通过Ajax发送多种类型的HashMap参数?,java,android,ajax,aquery,Java,Android,Ajax,Aquery,我是Android Studio的初学者,我正在使用Ajax将数据发送到数据库服务器。 我需要查询两种类型的HashMap参数。一个用于表单中的所有字符串值,另一个用于图像文件,但我似乎无法在一次调用中将它们发送到新的Aquery.ajax(//parameters)方法。此方法的所有变体都限制了仅使用一种贴图类型 我尝试将ParamFile参数放在另一个查询中,但仍然不起作用。虽然可能是因为我不完全确定“对象处理程序”在另一个方法定义中的含义 下面是我的方法的代码: private void

我是Android Studio的初学者,我正在使用Ajax将数据发送到数据库服务器。 我需要查询两种类型的HashMap参数。一个用于表单中的所有字符串值,另一个用于图像文件,但我似乎无法在一次调用中将它们发送到新的Aquery.ajax(//parameters)方法。此方法的所有变体都限制了仅使用一种贴图类型

我尝试将ParamFile参数放在另一个查询中,但仍然不起作用。虽然可能是因为我不完全确定“对象处理程序”在另一个方法定义中的含义

下面是我的方法的代码:

private void AddNewEquipment()
{
       try {
            //Two types of HashMap files

            HashMap<String, String> param = new HashMap<>();
            HashMap<String, Bitmap> paramFile = new HashMap<>();
            param.put("listing_title", ETitle.getText().toString());
            param.put("listing_type", String.valueOf(IntEquipmentType));
            param.put("listing_desc", EDesc.getText().toString());
            param.put("listing_rate", ERate.getText().toString());
            param.put("listing_mode", Mode);
            paramFile.put("listing_img_file", bitmap); //this never gets queried
            param.put("listing_date_from-x", AvailableFromDT);
            param.put("listing_date_to-x", AvailableToDT);
            param.put("listing_sell_mode", SellMode);
            param.put("listing_display_mode", String.valueOf(IntAdType));
            param.put("listing_status", String.valueOf(IntAdStatus));

            AQuery aq = new AQuery(this);
            aq.ajax(BASE_URL, param, JSONObject.class, new AjaxCallback<JSONObject>() {
                @Override
                public void callback(String url, JSONObject json, AjaxStatus status) {
                    super.callback(url, json, status);

                    Log.v("CALLBACK RECEIVED", String.valueOf(json) + status);
                    try {
                        if (json != null) {
                            JSONObject h = json.getJSONObject("success");
                            Log.v("SUCCESS", "DONE");
                            Toast.makeText(AddEquipment.this, "New Equipment Added", Toast.LENGTH_LONG).show();
                            exitEquipmentForm(); //method that opens the main activity again
                        } else {
                            Log.v("ERROR", "ERROR");
                        }
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }

            }.method(AQuery.METHOD_POST).header("Authorization", "Bearer "+SessionHandler.getKeyToken()));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
private void AddNewEquipment()
{
试一试{
//两种类型的HashMap文件
HashMap param=新的HashMap();
HashMap paramFile=新HashMap();
参数put(“listing_title”,ETitle.getText().toString());
参数put(“列表类型”,字符串.valueOf(IntEquipmentType));
参数put(“listing_desc”,EDesc.getText().toString());
参数put(“listing_rate”,rate.getText().toString());
参数put(“列表模式”,模式);
paramFile.put(“listing_img_file”,bitmap);//这永远不会被查询
参数put(“列表\日期\起始于-x”,可用FROMDT);
参数put(“列表日期到-x”,可用日期);
参数put(“挂牌销售模式”,销售模式);
参数put(“列表显示模式”,String.valueOf(IntAdType));
参数put(“列表_状态”,String.valueOf(IntAdStatus));
水渠aq=新水渠(本);
ajax(BASE_URL,param,JSONObject.class,新的AjaxCallback(){
@凌驾
公共无效回调(字符串url、JSONObject json、AjaxStatus状态){
回调(url、json、状态);
Log.v(“收到回调”,String.valueOf(json)+状态);
试一试{
if(json!=null){
JSONObject h=json.getJSONObject(“成功”);
Log.v(“成功”、“完成”);
Toast.makeText(AddEquipment.this,“添加了新设备”,Toast.LENGTH_LONG.show();
exitEquipmentForm();//再次打开主活动的方法
}否则{
Log.v(“错误”、“错误”);
}
}捕获(例外e){
e、 printStackTrace();
}
}
}.method(AQuery.method_POST).header(“授权”、“承载者”+SessionHandler.getKeyToken());
}捕获(例外e){
e、 printStackTrace();
}
}

我一直在获取空JSON对象,尽管这是因为并非所有参数都会被查询请尝试使用
Object
作为您的值类型:

HashMap<String, Object> params = new HashMap<>();
HashMap params=newhashmap();

如果使用固定数据类型初始化HashMap,则不能为该指定数据类型存储任何其他值。如果要将任何数据存储为值,则应使用对象数据类型

HashMap param=newhashmap();
然后,您可以添加任何值(位图或字符串)作为贴图值

您可以将值存储为

HashMap<String, Object> param = new HashMap<>();
param.put("listing_title", ETitle.getText().toString()); // String values
// add Other String parameters here..
param.put("listing_img_file", bitmap); // Your Image Bitmap file
HashMap param=newhashmap();
param.put(“listing_title”,ETitle.getText().toString());//字符串值
//在此处添加其他字符串参数。。
参数put(“列表img文件”,位图);//您的图像位图文件

我的建议是将您的
HashMap
替换为
LinkedHashMap
HashMap
不维护任何顺序,而
LinkedHashMap
维护元素的插入顺序。

如果您觉得这有帮助,请感谢。谢谢!那确实很有效!然而,我仍然得到一个空的JSON响应,一定是因为其他参数的缘故,哈哈。我会调查的。非常感谢您推荐LinkedHashMap!:)
HashMap<String, Object> param = new HashMap<>();
param.put("listing_title", ETitle.getText().toString()); // String values
// add Other String parameters here..
param.put("listing_img_file", bitmap); // Your Image Bitmap file