Php 在codename one中使用webservices时如何解析null
我在php中调用数据库中的数据,并使用Webservices将数据传递给codename one。如果我将URL指向JSON文件,我可以获取记录,但当我将其更改为php并使用JSON对页面进行编码时,我得到的是空值 在Codename one中使用Webservices时,如何解析空结果 这是我在代码名one中调用的php代码Php 在codename one中使用webservices时如何解析null,php,codenameone,Php,Codenameone,我在php中调用数据库中的数据,并使用Webservices将数据传递给codename one。如果我将URL指向JSON文件,我可以获取记录,但当我将其更改为php并使用JSON对页面进行编码时,我得到的是空值 在Codename one中使用Webservices时,如何解析空结果 这是我在代码名one中调用的php代码 <?php /* require the user as the parameter */ //http://localhost:8080/sample1/web
<?php
/* require the user as the parameter */
//http://localhost:8080/sample1/webservice1.php?user=1
if(isset($_GET['user']) && intval($_GET['user'])) {
/*soak in the passed variable or set our own*/
//$number_of_posts = isset($_GET['num']) ? intval($_GET['num']) : 10; //10 is the default
$format = strtolower($_GET['format']) == 'json' ? 'json' : 'xml'; //xml is the default
//$user_id = intval($_GET['user']); //no default
/* connect to the db */
$link = mysql_connect('localhost','root','') or die('Cannot connect to the DB');
mysql_select_db('test',$link) or die('Cannot select the DB');
/* grab the posts from the db */
//$query = "SELECT post_title, guid FROM wp_posts WHERE post_author = $user_id AND post_status = 'publish' ORDER BY ID DESC LIMIT $number_of_posts";
$query = "SELECT * FROM bugs";
$result = mysql_query($query,$link) or die('Errant query: '.$query);
/* create one master array of the records */
$posts = array();
if(mysql_num_rows($result)) {
while($post = mysql_fetch_assoc($result)) {
$posts[] = array('respons'=>$post);
}
}
/* output in necessary format */
if($format == 'json') {
// header('Content-type: application/json');
echo json_encode(array('respons'=>$posts));
}
/* disconnect from the db */
@mysql_close($link);
}
private static final String URL = "http://localhost/webpin/webservice1.php?user=1&format=json";
showpix.addActionListener((e)->{
ConnectionRequest req = new ConnectionRequest() {
@Override
protected void handleException(Exception ex) {
//handle error
}
};
req.setUrl(URL);
req.setPost(true);
req.setHttpMethod("GET"); //Change to GET if necessary
req.setDuplicateSupported(true);
req.addArgument("user", mypin.getText());
//req.addArgument("argumentToSendThroughPostOrGet2", "value2");
NetworkManager.getInstance().addToQueueAndWait(req);
if (req.getResponseCode() == 200) {
Map<String, Object> out = new HashMap<>();
Display.getInstance().invokeAndBlock(() -> {
JSONParser p = new JSONParser();
try (InputStreamReader r = new InputStreamReader(new ByteArrayInputStream(req.getResponseData()))) {
out.putAll(p.parseJSON(r));
} catch (IOException ex) {
//handle error
}
});
if (!out.isEmpty()) {
List<Map<String, Object>> responses = (List<Map<String, Object>>) out.get("respons");
for (Object response : responses) {
Map res = (Map) response;
//Object hk = res.get("id");
System.out.println(res.get("id"));
//if(hk.equals("I was returned")){
Dialog.show("ok",res.get("id") + "", "ok", "ok");
//}
//System.out.println(res.get("key"));
}
} else {
//handle error
}
} else {
//handle error
}
//req.setPost(false);
NetworkManager.getInstance().addToQueueAndWait(req);
});
代码如下:
showpix.addActionListener((e)->{
ConnectionRequest req = new ConnectionRequest() {
@Override
protected void handleException(Exception ex) {
//handle error
}
};
req.setUrl(DESTINATION_URL);
req.setPost(true);
req.setHttpMethod("GET"); //Change to GET if necessary
req.setDuplicateSupported(true);
//req.addArgument("user", mypin.getText());
req.addArgument("user", mypin.getText());
req.addArgument("format", "json");
req.setPost(false);
NetworkManager.getInstance().addToQueueAndWait(req);
if (req.getResponseCode() == 200) {
Map<String, Object> out = new HashMap<>();
Display.getInstance().invokeAndBlock(() -> {
JSONParser p = new JSONParser();
try (InputStreamReader r = new InputStreamReader(new ByteArrayInputStream(req.getResponseData()))) {
out.putAll(p.parseJSON(r));
} catch (IOException ex) {
//handle error
}
});
if (!out.isEmpty()) {
List<Map<String, Object>> responses = (List<Map<String, Object>>) out.get("response");
for (Object response : responses) {
Map res = (Map) response;
// Object hk = res.get("id");
System.out.println(res.get("id"));
// if(hk.equals("I was returned")){
// Dialog.show("ok",res.get("pin")+ "", "ok", "ok");
// }
System.out.println(res.get("id"));
}
} else {
//handle error
}
} else {
//handle error
}
});
我注意到的第一件事是您调用了
NetworkManager.getInstance().addToQueueAndWait(req)代码>两次
第二件事是,您应该更改req.setPost(true)代码>至<代码>请求设置柱(假)代码>如果您在php中使用$\u GET方法
第三,从您的URL中删除“?”和之后的所有内容,无论您想传递什么,都应通过以下方式添加:
网址:
private static final String URL = "http://localhost/webpin/webservice1.php";
req.addArgument("format", "json");
req.addArgument("user", mypin.getText());
参数:
private static final String URL = "http://localhost/webpin/webservice1.php";
req.addArgument("format", "json");
req.addArgument("user", mypin.getText());
在php端,在浏览器中运行代码以确保代码中没有错误。确保取消对标题的注释。请参阅下面对代码的微小更改:
$posts = array();
$row = array();
if(mysql_num_rows($result)) {
while($post = mysql_fetch_assoc($result)) {
$posts["response"][] = $post;
}
$row = array("respons" => $posts["response"], "code" => 200, "message" => "success");
} else {
$row = array("code" => 101, "message" => "No data was returned");
}
/* output in necessary format */
if($format == 'json') {
header('Content-type: application/json');
echo json_encode($row, JSON_PRETTY_PRINT);
}
记住把我对你的另一个问题的回答标记为答案。请记住,我仍然面临这个代码的挑战。我已经添加了详细信息,您不应该调用req.addArgument(“key”、“value”)调用此req.setHttpMethod(“POST”)之前的代码>代码>。MyApplication.java的第293行是什么?第293行是:req.setPost(false);是否有调用req.addArgument(“key”、“value”)代码>在第293行之前?如果有,请将其移到该线下方。