gpt4 book ai didi

java - 将字符串数组作为 POST 传递给 PHP

转载 作者:可可西里 更新时间:2023-11-01 12:42:02 24 4
gpt4 key购买 nike

我正在尝试将字符串数组作为 POST 数据传递给 PHP 脚本,但不确定要做什么。

到目前为止,这是我执行 PHP 脚本的代码:

我试图传递数组的地方:

nameValuePairs.add(new BasicNameValuePair("message",message));
String [] devices = {device1,device2,device3};
nameValuePairs.add(new BasicNameValuePair("devices", devices));// <-- Can't pass String[] to BasicNameValuePair
callPHPScript("notify_devices", nameValuePairs);

调用 PHP 脚本:

public String callPHPScript(String scriptName, List<NameValuePair> parameters) {
HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost("http://localhost/" + scriptName);
String line = "";
StringBuilder stringBuilder = new StringBuilder();
try {
post.setEntity(new UrlEncodedFormEntity(parameters));

HttpResponse response = client.execute(post);
if (response.getStatusLine().getStatusCode() != 200)
{
System.out.println("DB: Error executing script !");
}
else {
BufferedReader rd = new BufferedReader(new InputStreamReader(
response.getEntity().getContent()));
line = "";
while ((line = rd.readLine()) != null) {
stringBuilder.append(line);
}
}

} catch (IOException e) {
e.printStackTrace();
}
System.out.println("DB: Result: " + stringBuilder.toString());
return stringBuilder.toString();
}

以及有问题的 PHP 脚本:

<?php
include('tools.php');
// Replace with real BROWSER API key from Google APIs
$apiKey = "123456";

// Replace with real client registration IDs
$registrationIDs = array($_POST[devices]); <-- Where I want to pass array to script

// Message to be sent
$message = $_POST['message'];

// Set POST variables
$url = 'https://android.googleapis.com/gcm/send';

$fields = array(
'registration_ids' => $registrationIDs,
'data' => array( "message" => $message ),
);

$headers = array(
'Authorization: key=' . $apiKey,
'Content-Type: application/json'
);

// Open connection
$ch = curl_init();

// Set the url, number of POST vars, POST data
curl_setopt( $ch, CURLOPT_URL, $url );

curl_setopt( $ch, CURLOPT_POST, true );
curl_setopt( $ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );

curl_setopt( $ch, CURLOPT_POSTFIELDS, json_encode( $fields ) );

// Execute post
$result = curl_exec($ch);

// Close connection
curl_close($ch);

print_as_json($result);
?>

有什么想法吗?谢谢!

编辑

我正在尝试以下但仍然不开心:

public void notifyDevices(Message message) {

List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
List<String> deviceIDsList = new ArrayList<String>();
String [] deviceIDArray;

//Get devices to notify
List<JSONDeviceProfile> deviceList = getDevicesToNotify();

for(JSONDeviceProfile device : deviceList) {
deviceIDsList.add(device.getDeviceId());
}

//Array of device IDs
deviceIDArray = deviceIDsList.toArray(new String[deviceIDsList.size()]);
for(String deviceID : deviceIDArray) {

nameValuePairs.add(new BasicNameValuePair("devices[]", deviceID));

}

//Call script
callPHPScript("GCM.php", nameValuePairs);
}

这就是我所有的“错误报告”...

        HttpResponse response = client.execute(post);
if (response.getStatusLine().getStatusCode() != 200)
{
System.out.println("DB: Error executing script !");
}

最佳答案

要在查询字符串中将数组传递给 php,您应该将 [] 添加到标识符并将每个项目添加为单独的条目,这样应该可以工作:

nameValuePairs.add(new BasicNameValuePair("devices[]", device1));
nameValuePairs.add(new BasicNameValuePair("devices[]", device2));
nameValuePairs.add(new BasicNameValuePair("devices[]", device3));

现在,php 端的 $_POST['devices'] 将包含一个数组。

关于java - 将字符串数组作为 POST 传递给 PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15851574/

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