gpt4 book ai didi

php - Android从客户端发送数据,服务器检索并再次发送给客户端

转载 作者:行者123 更新时间:2023-11-29 13:15:34 25 4
gpt4 key购买 nike

大家好,我正在 android 中做一个客户端/服务器应用程序。我想要做的是从客户端发送数据,然后服务器检索并再次发送给客户端..

例如,我要将项目代码发送到我的服务器,并且我想查询如下内容:

 SELECT itemname FROM items WHERE itemcode = :itemcode

$itemname = $result['itemname'];

其中 :itemcode 是我的客户端传递的数据。接下来,在传递项目代码后,我想使用项目名称包含在下一个查询中以检索所有其他记录。

SELECT itemsize, itemmeasure FROM itemsdetail WHERE itemname = :itemname

因此它显示了所有记录。

到目前为止我已经尝试过,我创建了另一个表来查询最后插入的数据。但我认为这效率不高。我只想将查询放入一个 php 文件中。

<?php 

include('dbconnect.php');

$sql = "SELECT itemname FROM items ORDER BY _id DESC LIMIT 1";

$stmt = $conn->prepare($sql);
$stmt->execute();

$result = $stmt->fetch(PDO::FETCH_ASSOC);
$itemname = $result['itemname'];

$sql = "SELECT itemsize, itemmeasure
FROM itemsdetail
AND itemname = :itemname";
$stmt = $conn->prepare($sql);
$stmt->execute(array(':itemname' => $itemname));

$set = array();

while($r = $stmt->fetchAll(PDO::FETCH_ASSOC)){
$set = $r;
}

header('Content-type: application/json');
echo json_encode($set);


?>

Java:

@Override
protected Void doInBackground(Void... params) {
// Create the array
arraylist = new ArrayList<HashMap<String, String>>();
// Retrieve JSON Objects from the given website URL in JSONfunctions.class
String result = JSONFunctions.getJSONfromURL(URL);

try {
JSONArray jr = new JSONArray(result);
for(int i=0;i<jr.length();i++)
{
HashMap<String, String> map = new HashMap<String, String>();
jb = (JSONObject)jr.get(i);
map.put(TAG_ITEMSIZE, jb.getString(TAG_ITEMSIZE));
map.put(TAG_ITEMMEASURE, jb.getString(TAG_ITEMMEASURE));
arraylist.add(map);

}
} catch (JSONException e) {
Log.e("Error", e.getMessage());
e.printStackTrace();
}
return null;
}

到目前为止,如果我将两个查询放在一个 PHP 文件中,我会收到错误,我不知道出了什么问题。所以我的替代解决方案是创建另一个 php 文件来接收从客户端传递的数据。但我知道这不是一个好的解决方案。我需要能够将其放入一个 php 文件中以传递我的数据,并在我的第二个查询中使用传递的数据。您有任何想法如何做到这一点吗?对你的帮助表示感谢。谢谢。

最佳答案

在 Google Plus 上聊天后,根本原因是您使用 JSONParser 的教程。 JSONParser 看起来像是第三方 API,恶心……

您正在从服务器返回一个数组,而不是导致问题的对象。以下是 Google Plus 上分享的实现代码

// Create a new HttpClient and Post Header
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(URL);

try {

// Building Parameters
List<NameValuePair> params1 = new ArrayList<NameValuePair>();
params1.add(new BasicNameValuePair(TAG_VANCODE, "VAN-ABC"));

// Set HTTPPOST with your parameters
httppost.setEntity(new UrlEncodedFormEntity(params1));

// Execute HTTP Post Request
HttpResponse response = httpclient.execute(httppost);

// Setup an InputStream to handle the response.
InputStream ips = response.getEntity().getContent();
BufferedReader buf = new BufferedReader(new InputStreamReader(ips,"iso-8859-1"), 8);

// Use a reader to read the data and store it in a String builder
StringBuilder sb = new StringBuilder();
String s;
while(true) {
s = buf.readLine();
if(s==null || s.length()==0)
break;
sb.append(s);
}
buf.close();
ips.close();

System.out.println("I AM HERE TESTING OUTPUT - " + sb.toString());

// Take the JSON and create an array
// sb.string should look like this
JSONArray jr = new JSONArray(sb.toString());

for(int i = 0; i<jr.length(); i++) {
JSONObject jo = jr.getJSONObject(i);
System.out.println("Document Number " + jo.getString("doccumentnumber"));
System.out.println("Item Code: " + jo.getString("itemcode"));
}

} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}

关于php - Android从客户端发送数据,服务器检索并再次发送给客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21508481/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com