«java.lang.IllegalStateException:应为 BEGIN_ARRAY 但在第 2 行第 1 列路径 $» 中为 STRING Kotlin 错误
«java.lang.IllegalStateException: Expected BEGIN_ARRAY but was STRING at line 2 column 1 path $» Kotlin error
你好,我正在尝试调用我自己使用 Slim4 制作的 Web 服务(使用 Retrofit),但是它给了我同样的错误。我已经来回尝试了许多在其他线程上找到的解决方案,但是 none 仍然有效。
这是我获取 Slim 4 和 NOTORM 库的终点
$app->get('/api/anuncios', function ($request, $response) {
require_once('db/dbconnection.php');
foreach($db->anuncios()
as $row){
$data[] = $row;
}
echo json_encode($data, JSON_UNESCAPED_UNICODE);
return $response;
});
这些是我在 Android Studio 上的端点(我现在只尝试第一个)
interface EndPoints {
@GET("/RoomForStudents/api/anuncios/")
fun getAnuncios(): Call<List<Anuncio>>
/** @GET("/api/anuncios/{id}")
fun getAnunciosById(@Path("id") id: Int): Call<Anuncio>*/
}
我的 ServiceBuilder(我已经添加了 gson,以解决另一个错误,关于 JSON 格式错误)
object ServiceBuilder {
private val gson = GsonBuilder().setLenient().create()
private val client = OkHttpClient.Builder().build()
private val retrofit = Retrofit.Builder()
/**.baseUrl("https://tneveda.000webhostapp.com/")*/
.baseUrl("https://tneveda.000webhostapp.com/")
.addConverterFactory(GsonConverterFactory.create(gson))
.client(client)
.build()
fun<T> buildService(service: Class<T>): T {
return retrofit.create(service)
}
}
我认为问题出在我的 webService 中读取的数据格式上,因为我用这个 Dummy Data https://jsonplaceholder.typicode.com/users 进行了测试并且它有效,但是对于我的 WebService 的数据它不起作用,但是我很难找到解决方案
谢谢
只是为了添加我的网络服务的获取端点的结果
https://tneveda.000webhostapp.com/RoomForStudents/api/anuncios
编辑
在邮递员上注意到,在使用我的端点后,我在 html 中得到了响应,并添加了这是 PHP 文件,端点带有 SLIM/NOTORM
'''
header("Content-Type: application/json; 字符集=UTF-8");
'''
也将 JSON_UNESCAPED_UNICODE 更改为 JSON_PRETTY_PRINT
现在我在服务器中的响应是 JSON 格式并且漂亮
然而它仍然给我同样的错误
您应该从 @GET
注释中删除最后一个正斜杠 /
。
@GET("/RoomForStudents/api/anuncios")
fun getAnuncios(): Call<List<Anuncio>>
由于最后一个 /
指向不同的端点,您的服务器正在抛出一个 HttpNotFoundException
。
你好,我正在尝试调用我自己使用 Slim4 制作的 Web 服务(使用 Retrofit),但是它给了我同样的错误。我已经来回尝试了许多在其他线程上找到的解决方案,但是 none 仍然有效。
这是我获取 Slim 4 和 NOTORM 库的终点
$app->get('/api/anuncios', function ($request, $response) {
require_once('db/dbconnection.php');
foreach($db->anuncios()
as $row){
$data[] = $row;
}
echo json_encode($data, JSON_UNESCAPED_UNICODE);
return $response;
});
这些是我在 Android Studio 上的端点(我现在只尝试第一个)
interface EndPoints {
@GET("/RoomForStudents/api/anuncios/")
fun getAnuncios(): Call<List<Anuncio>>
/** @GET("/api/anuncios/{id}")
fun getAnunciosById(@Path("id") id: Int): Call<Anuncio>*/
}
我的 ServiceBuilder(我已经添加了 gson,以解决另一个错误,关于 JSON 格式错误)
object ServiceBuilder {
private val gson = GsonBuilder().setLenient().create()
private val client = OkHttpClient.Builder().build()
private val retrofit = Retrofit.Builder()
/**.baseUrl("https://tneveda.000webhostapp.com/")*/
.baseUrl("https://tneveda.000webhostapp.com/")
.addConverterFactory(GsonConverterFactory.create(gson))
.client(client)
.build()
fun<T> buildService(service: Class<T>): T {
return retrofit.create(service)
}
}
我认为问题出在我的 webService 中读取的数据格式上,因为我用这个 Dummy Data https://jsonplaceholder.typicode.com/users 进行了测试并且它有效,但是对于我的 WebService 的数据它不起作用,但是我很难找到解决方案
谢谢
只是为了添加我的网络服务的获取端点的结果 https://tneveda.000webhostapp.com/RoomForStudents/api/anuncios
编辑
在邮递员上注意到,在使用我的端点后,我在 html 中得到了响应,并添加了这是 PHP 文件,端点带有 SLIM/NOTORM ''' header("Content-Type: application/json; 字符集=UTF-8"); ''' 也将 JSON_UNESCAPED_UNICODE 更改为 JSON_PRETTY_PRINT
现在我在服务器中的响应是 JSON 格式并且漂亮
然而它仍然给我同样的错误
您应该从 @GET
注释中删除最后一个正斜杠 /
。
@GET("/RoomForStudents/api/anuncios")
fun getAnuncios(): Call<List<Anuncio>>
由于最后一个 /
指向不同的端点,您的服务器正在抛出一个 HttpNotFoundException
。