java - 改造 GET 请求中的字符串
问题描述
我想在我的应用程序中实现搜索。当我用解释器记录发送请求时,我看到了这个:
这是我要发送英文字符的 URL:
https://admanroid.ir/bavand/get_near_shop_cat.php?lat=35.5088513&lng=46.172843&search="computer"
但取而代之的是,这个 URL 发送:
https://admanroid.ir/bavand/get_near_shop_cat.php?lat=35.5088513&lng=46.172843&search=computer
它从我的搜索字符串中删除引号。
我的回复返回空结果。我不知道为什么。但是当我用浏览器发送请求并将我的字符串搜索输入到 URL 时,一切正常。这个问题只是在将字符串传递到 URL 时发生
这是我的请求网络接口:
@GET("get_near_shop_cat.php")
Observable<NearShopLocationModel> getNearShopBySearch(@Query("lat") Double lat,@Query("lng") Double lng,@Query("search") String search);
这是可观察的:
private Observable<NearShopLocationModel> getObservableNearShopBySerach(Double lat,Double lng,String search){
return NetworkClient.getRetrofit().create(NetworkInterface.class)
.getNearShopBySearch(lat,lng,search)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
}
这是我的 API php 代码:
<?php
//Importing the database connection
require_once('DBconnect.php');
$lat = $_GET['lat'];
$lng = $_GET['lng'];
$search = $_GET["search"];
//SQL query to fetch data of a range
$sql = "SELECT id,title,imageURL1,comment,lat,lng, ( 3959 * acos( cos( radians(" . $lat . ") ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(" . $lng . ") ) + sin( radians(" . $lat . ") ) * sin( radians( lat ) ) ) )
AS distance FROM shop WHERE title LIKE CONCAT('%',$search, '%') || categoryName LIKE CONCAT('%',$search, '%') HAVING distance < 5";
//Getting result
$res = mysqli_query($con,$sql);
//Adding results to an array
$results = array();
while($row = mysqli_fetch_array($res)){
array_push($results, array(
"id"=>$row['id'],
"title"=>$row['title'],
"imageURL1"=>$row['imageURL1'],
"comment"=>$row['comment'],
"lat"=>$row['lat'],
"lng"=>$row['lng']
)
);
}
//Displaying the array in json format
echo json_encode(array("results"=>$results));
解决方案
像这样发送你的字符串:
private Observable<NearShopLocationModel> getObservableNearShopBySerach(Double lat,Double lng,String search){
return NetworkClient.getRetrofit().create(NetworkInterface.class)
.getNearShopBySearch(lat,lng,"\""+search+"\"")
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
}
推荐阅读
- c++ - 自定义地图类中的分段错误
- apache-nifi - NiFi在将记录插入表后创建索引
- mysql - Python 不会从 mysql 表中检索数据
- c - C - 创建一个保存到 ppm 文件中
- javascript - 如何在javascript箭头函数中返回嵌套函数的结果?
- reactjs - 为地图函数内的特定元素呈现对话框窗口
- java - 将 google 身份验证令牌传递给 WebView Activity
- go - 解析 go.mod:意外的模块路径“golang.org/x/lint”
- mysql - MySQL:在连接条件中使用别名
- jenkins - 如何在 Jenkins 管道中将 groovy 变量传递给 powershell?