android - 参数中的空格导致android中的错误
问题描述
我正在使用 Web API 集成到我的应用程序中。我使用 .net 服务器 API,但问题是当我使用 URL 传递参数时,如果 API 的任何参数包含空格,它会引发错误。当我传递字符串值时,它会因为空间而引发错误,如果我删除空间,那么一切都是完美的。请帮忙!!!
private void getEnterLoadDetail() {
pBar.setVisibility(View.VISIBLE);
pref = getContext().getSharedPreferences(PREF_NAME, Context.MODE_PRIVATE);
String userName = pref.getString(KEY_USER_NAME, "username");
Log.e("TAG", "USERNAME" + userName);
tripId = txtTripId.getText().toString();
materialCode = txtMaterialCode.getText().toString();
vendorCode = txtVendorCode.getText().toString();
String url = "http://18.216.239.216:8086/api/Mobile?username="+userName+"&tripid=" + tripId + "&VehicleNo=" + vehicleNo + "&MaterialName=" + materialname + "&MaterialCode=" + materialCode + "&VendorName=" + vendorName + "&VendorCode=" + vendorCode + "&MaterialRate=" + rate + "&Remarks="+remarks+"";
StringRequest stringRequest = new StringRequest(Request.Method.POST, url,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.e("response", response.toString());
try {
if (response.contains("success")) {
Toast.makeText(getActivity(), R.string.load_detail_submitted, Toast.LENGTH_LONG).show();
edtVehicleNo.setText("");
edtRate.setText("");
edtRemarks.setText("");
txtMaterialCode.setText("Material Code");
txtVendorCode.setText("Vendor Code");
spinnerVendorName.setSelection(0);
spinnerMaterialName.setSelection(0);
txtTripId.setText("Trip Id");
}
} catch (Exception e) {
e.printStackTrace();
Activity activity = getActivity();
if (activity != null && isAdded()) {
Toast.makeText(activity, R.string.some_error_occured, Toast.LENGTH_LONG).show();
}
}
pBar.setVisibility(View.GONE);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
VolleyLog.e("Error: " + error.getMessage());
Activity activity = getActivity();
if (activity != null && isAdded()) {
Toast.makeText(activity, R.string.some_error_occured, Toast.LENGTH_LONG).show();
pBar.setVisibility(View.GONE);
}
}
});
RequestQueue requestQueue = Volley.newRequestQueue(getActivity());
//adding the string request to request queue
requestQueue.add(stringRequest);
}
-------- materialname和所有其他变量包含空格并且 API 抛出错误。
解决方案
尝试
String url = "http://18.216.239.216:8086/api/Mobile?username="+userName+"&tripid=" + tripId + "&VehicleNo=" + vehicleNo + "&MaterialName=" + materialname + "&MaterialCode=" + materialCode + "&VendorName=" + vendorName + "&VendorCode=" + vendorCode + "&MaterialRate=" + rate + "&Remarks="+remarks+"";
String convertedUrl = URLEncoder.encode(url, "utf-8");
推荐阅读
- dc.js - dc.js 获取维度总数
- node.js - 为什么 expires 在猫鼬模型中不起作用?
- r - R dplyr:基于行的条件拆分/应用/组合
- java - Java 安全管理器(奇怪的行为)
- java - 个性化适配器,尝试获取每个元素的 id 并显示它
- python - 使用 Twitter API 访问推文的 JSON 属性
- testing - TestCafe - 测试失败 onGetBposShellInfoNavBarData
- python - 尝试拟合模型 keras 时出现索引错误
- csv - 批处理:如果不存在则执行(递归)
- angularjs - 具有命名视图的 Angular UI-Router,嵌套导航栏不呈现