我有下面的应用程序,可以在php中与api进行通信。
我正在使用改装来完成它,使用GET方法,我发送一个int,通过该int返回项目。
MySQL表系列:
id
Mysql表集:
id
f_id (Foreign key to Series) .
活动正在加载系列项目,单击时,它会将系列id发送到GET,并返回项目,但问题是,它记录了一个错误,但在Mysql端,查询是正确的。
例如,它将“1”作为序列id发送,结果是(我使用echo$query进行检查):
SELECT * FROM Episodes WHERE Episodes.series_f_key= 1 ORDER BY Episodes.id DESC {"MyDatabase":[{"id":"1","title":"1","image":"TestImge.jpg","link":"https://www.youtube.com/watch?v=uzgp65UnPxA","series":"\u062a\u062c\u0631\u0628\u0629","series_f_key":"1"}]}
没错,但在Android客户端,它说:
com.google.gson.stream.MalformedJsonException: Use JsonReader.setLenient(true) to accept malformed JSON at line 3 column 1 path $
此外,我正在发送一个阿拉伯语查询,同样的问题也在发生,查询是正确的,“echo$query”响应如下:
{"MyDatabase":[{"id":"1","title":"\u062a\u062c\u0631\u0628\u0629","image":"Test.jpg","country":"\u0633\u0648\u0631\u064a\u0627"}]}
Android客户端:
com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was BEGIN_ARRAY at line 3 column 2 path $
其他GET工作正常,只有这些会导致问题。
改装代码:
private void MakeConnection(final EpisodesAdapter Adapter,int id){
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(Constants.BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.build();
ReApi Api = retrofit.create(ReApi.class);
Connection = Api.GetEpisodes(id);
Connection.enqueue(new Callback<Model>() {
@Override
public void onResponse(Call<Model> call, Response<Model> response) {
List<EpisodeItem> LatestItems = response.body().GetList();
for (int i = 0; i < LatestItems.size(); i++) {
if (Items == null)
Items = new ArrayList<>();
Items.add(LatestItems.get(i));
}
Adapter.notifyDataSetChanged();
}
@Override
public void onFailure(Call<Model> call, Throwable t) {
Toast.makeText(EpisodesActivity.this, getResources().getString(R.string.couldnotfindanything), Toast.LENGTH_LONG).show();
t.printStackTrace();
}
});
}
private interface ReApi{
@GET("myapitest.php")
Call<Model> GetEpisodes(@Query("getbyid")int id);
}
private class Model{
private List<EpisodeItem> MyDatabase;
public List<EpisodeItem> GetList() {
return MyDatabase;
}
public void SetList(List<EpisodeItem> rt) {
this.MyDatabase= rt;
}
}
型号类别:
private int id;
private String title;
private String link;
private String image;
private String series;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getLink() {
return link;
}
public void setLink(String link) {
this.link = link;
}
public String getImage() {
return image;
}
public void setImage(String image) {
this.image = image;
}
public String getSeries() {
return series;
}
public void setSeries(String series) {
this.series = series;
}
请求示例:
200 OK http://www.syriantc.com/ApiTest/apifile.php?getbyepisode=1 (313ms)
06-07 09:33:49.107 29654-29863/com.abohani.test D/OkHttp: Date: Tue, 07 Jun 2016 06:33:46 GMT
06-07 09:33:49.107 29654-29863/com.abohani.test D/OkHttp: Server: Apache/2.4.18
06-07 09:33:49.107 29654-29863/com.abohani.test D/OkHttp: X-Powered-By: PHP/5.4.45
06-07 09:33:49.107 29654-29863/com.abohani.test D/OkHttp: Vary: Accept-Encoding,User-Agent
06-07 09:33:49.107 29654-29863/com.abohani.test D/OkHttp: Keep-Alive: timeout=5
06-07 09:33:49.107 29654-29863/com.abohani.test D/OkHttp: Connection: Keep-Alive
06-07 09:33:49.107 29654-29863/com.abohani.test D/OkHttp: Content-Type: text/html
06-07 09:33:49.107 29654-29863/com.abohani.test D/OkHttp: OkHttp-Sent-Millis: 1465281228946
06-07 09:33:49.107 29654-29863/com.abohani.test D/OkHttp: OkHttp-Received-Millis: 1465281229106
06-07 09:33:49.108 29654-29863/com.abohani.test D/OkHttp:
06-07 09:33:49.108 29654-29863/com.abohani.test D/OkHttp: SELECT * FROM Episodes WHERE Episodes.series_f_key= 1 ORDER BY Episodes.id DESC
06-07 09:33:49.108 29654-29863/com.abohani.test D/OkHttp: {"MyDatabase":[{"id":"1","title":"1","image":"Test.jpg","link":"https://drive.google.com/file/d/0B8UrrDgeyvYJMXdtMXdYeEFnLVU/view","series":"\u062a\u062c\u0631\u0628\u0 629","series_f_key":"1"}]}
06-07 09:33:49.108 29654-29863/com.abohani.test D/OkHttp: <-- END HTTP (284-byte body)
您的异常消息似乎在告诉您要做什么:
Use JsonReader.setLenient(true)
此外,此消息告诉您需要更改JSON解析,因为它需要一个对象,但需要一个数组:
Expected BEGIN_OBJECT but was BEGIN_ARRAY
您的示例JSON如下所示:{code>{“MyDatabase”:[{“id”:“。您似乎没有考虑序列化中键为“MyDatabase”的外部对象。您可以为MyDatabase添加另一个模型类,然后该类包含事件项列表。
莱文是正确的。我想添加一个引用和更多信息。
这个链接进一步解释。问题是您的json对象存在某种问题,但它被认为是正确的。通常结尾的空格会导致这种情况。
因此,我正在构建一个云函数,它接受customerID,根据customerID过滤文档,并返回文档列表。遗憾的是,它返回一个空数组。我相信这是一个简单的解决办法。 以下是云功能: 下面是我从客户端调用它时的代码。 此外,这里是一个萤火虫的屏幕截图。 firestore的截图
以下是我的疑问.... 我没有结果。 另外,我正在使用这个插件来生成请求正文。 我的查询如下所示.. null 感谢您到目前为止的阅读,如果有人能帮助我找出如何使这一工作,我将非常感谢。
我正在使用java Vert.x项目,并使用Vert.x官方文档的指南,使用反应式MySQL客户端连接到MySQL。当我试图从< code>SELECT查询中检索数据时,它总是给出空结果,即使数据库中有数据。下面给出了用来检索数据的方法。 上述方法的连接属性为: 该方法不显示任何错误,但始终给出o结果,并显示< code>logger.error("没有id的数据参考号:" id ");。这是什么
我正在尝试从我的应用打开Gmail(点击按钮)。我只在Android11中面临这个问题。这不是打开Gmail。在本例中,QueryInputActivities返回空列表。 请帮助我解决android 11的这个问题。下面是我正在使用的代码。。
设备:Emulator pixel 3a-Android11 代码: 使用时: listCam大小为0 当切换到: listCam大小是1-因为它应该是。 使用以下代码: 工作正常,并显示相机应用程序。 你知道为什么queryIntentActivities没有返回摄像机的意图吗? 谢谢!
问题内容: 我需要在node.js中用猫鼬返回查询的结果。 如何返回值以将值设置为变量? 我需要做的是: 为了有: 非常感谢您的回复 。 我还有另一个问题。 如何使用find或findOne在查询运算符中传递变量?喜欢 : 问题答案: 有几种方法可以实现您想要的。 1.使用猫鼬查询 在这种策略中,您的函数返回一个Mongoose查询,您以后可以使用它来调用该方法并使用它来获取结果。 然后,您可以简