如何检索从HTTP POST接收到PHP的两个字段值?

时间:2010-10-12 22:01:56

标签: java php android

这是我想要做的。

从我的Android应用程序代码中,我执行HTTP POST,如下所示

HttpPost httppost = new HttpPost("http://xyz.com/Retrieve.php");

PHP代码应该发送回图像和URL。

$q=mysql_query("SELECT image, url FROM testblob WHERE id = 'id[0]'");
list($data) = mysql_fetch_row($q);
echo $data;

现在在我的Android代码中,我执行以下操作,从响应中检索图像,但如何检索URL。

httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
InputStream is = entity.getContent();

我检索图像如下,这部分有效。

ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] buf = new byte[1024];
int n = 0;
while ((n=is.read(buf))>=0)
    {
    baos.write(buf, 0, n);
    }
    is.close();
    byte[] bytes = baos.toByteArray();
    Bitmap bitmap2 = null;
    bitmap2 = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);

所以我想知道在InputStream对象中是否接收到图像和url,如果是,我该如何从中检索URL?

感谢您的帮助。

3 个答案:

答案 0 :(得分:1)

这需要更多开销,但如果您向服务器发出2个请求可能会更容易。这样你就不必担心分离字节了。

对于URL请求,返回文本响应。

对于图像请求,返回字节(正如您现在所做的那样)。

答案 1 :(得分:1)

你有几种选择;这是一个。您可以使用json_encode()对图像和网址进行编码,而不是简单地从PHP回显图像的字节。

例如:

$q = $pdo->prepare("SELECT image, url FROM testblob WHERE id = ?");
$q->execute(array($id[0]));
header("Content-Type: application/json");
echo json_encode($q->fetch(PDO::FETCH_NUM));

在Java端,您将从URL中读取响应,然后将其适当地解析为JSON object

我已经更新了示例以使用PDO而不是旧的数据库访问功能。您可以阅读PHP Data Objects here

答案 2 :(得分:0)

1)您的PHP代码不使用post变量,因此您始终检索相同的图像。

2)设置输出类型后,您可以将图像流回客户端;

$q=mysql_query("SELECT image FROM testblob WHERE id = '".$_POST['id']."'");
$row = mysql_fetch_row($q);
header("Content-Type: image/jpeg");
echo $row[0];
相关问题