gpt4 book ai didi

java - PHP Post 数组为空

转载 作者:行者123 更新时间:2023-12-02 07:11:13 27 4
gpt4 key购买 nike

当前在访问服务器端脚本的 $_POST 数组中的某些变量时遇到问题。

上下文:我正在使用 PHP 从 Android 设备向 mySQL 服务器提交一些值。当我“创建新路线”时,php 和 java 工作正常,例如:

构建要发布的变量列表:

List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("name", name));
params.add(new BasicNameValuePair("startLat", startLat));
params.add(new BasicNameValuePair("startLong", startLong));
params.add(new BasicNameValuePair("endLat", endLat));
params.add(new BasicNameValuePair("endLong", endLong));
params.add(new BasicNameValuePair("waypoints", waypoints.toString()));
params.add(new BasicNameValuePair("rating", rating));
params.add(new BasicNameValuePair("difficulty", difficulty));
params.add(new BasicNameValuePair("enjoyability", enjoyability));
params.add(new BasicNameValuePair("count", count));
params.add(new BasicNameValuePair("sum", sum));
params.add(new BasicNameValuePair("countDiff", countDiff));
params.add(new BasicNameValuePair("sumDiff", sumDiff));
params.add(new BasicNameValuePair("countEnjoy", countEnjoy));
params.add(new BasicNameValuePair("sumEnjoy", sumEnjoy));

然后我调用我的方法来发布它们:

        if(method == "POST"){
// request method is POST
// defaultHttpClient
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(url);
httpPost.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8));
//System.out.println(httpPost.getURI().toString());
//System.out.println(httpPost.getEntity().toString());
HttpResponse httpResponse = httpClient.execute(httpPost);
HttpEntity httpEntity = httpResponse.getEntity();
is = httpEntity.getContent();

这工作正常,并且这些值可用于 $_POST 数组中的 PHP 脚本。我遇到的问题是,当我使用以下命令执行完全相同的过程时(请注意,在本例中我正在“更新路线”,因此变量较少,这反射(reflect)在用于更新路线的 PHP 脚本中)路线:

            List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("name", name));
params.add(new BasicNameValuePair("rating", Double.toString(currentRating)));
params.add(new BasicNameValuePair("difficulty", Double.toString(currentDiff)));
params.add(new BasicNameValuePair("enjoyability", Double.toString(currentEnjoy)));
params.add(new BasicNameValuePair("count", Double.toString(currentCount)));
params.add(new BasicNameValuePair("sum", Double.toString(currentSum)));
params.add(new BasicNameValuePair("countDiff", Double.toString(currentDiffCount)));
params.add(new BasicNameValuePair("sumDiff", Double.toString(currentDiffSum)));
params.add(new BasicNameValuePair("countEnjoy", Double.toString(currentEnjoyCount)));
params.add(new BasicNameValuePair("sumEnjoy", Double.toString(currentEnjoySum)));


JSONObject jsonEdit = jsonParser.makeHttpRequest(url_edit,
"POST" +
"", params);

PHP 脚本服务器端的 $_POST 数组为空。我知道这可能有点含糊,但我希望你能理解。我正在为这两种方法执行完全相同的发送数据过程,但后者是空的。

最佳答案

您遇到了旧的 ==equals 问题,加上了 String 实习。

这就是罪魁祸首

if(method == "POST"){

应该是

if(method.equals("POST")){

第一个方法适用于纯 String 对象。与任何其他 "POST" 实例相比,任何 "POST" 实例都会返回 true(查找 String interning 以了解原因)。然而,在后一种情况下,你会发现一些有趣的东西:

JSONObject jsonEdit = jsonParser.makeHttpRequest(url_edit,
"POST" + //Ooooops, what is this?
"", params);

现在您比较 "POST"== "POST"+"" ...这不是按内容比较它们,但是引用!而第二个是不同的,因此比较结果为 false...

关于java - PHP Post 数组为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15502151/

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