首页 > 解决方案 > 改造 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));

标签: javaandroidretrofit

解决方案


像这样发送你的字符串:

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());
    }

推荐阅读