PHP $ _POST为空或空 - java

我拼命试图解决我的android应用程序的问题。我将枚举设置为“标签”的列表提交到服务器。 PHP页面应查看此标记,然后继续执行相关功能,并以json数组或对象的形式返回。此功能适用于该应用程序的一个版本,但克隆版本无法获取数据。 PHP只是直接跳过了isset标记处的标记检查,并且标记不是空条件,因此看到一个空的POST或我提交的对象不符合我不知道的某些要求时,它一定可以完全解决。

我浏览了这么多帖子并进行了搜索,但没有找到解决方案。为什么它不能用于该应用程序的一个版本,却不能用于升级版本,而升级版本没有对用于发送数据的方法进行任何更改?

所以这就是我要处理的。首先,AsyncTask接收对象并传递给处理通信的类:

private class UpdateJobList extends AsyncTask<User, Void, Boolean>  {

    private List<Message> messages;

    public UpdateJobList()  {
        super();
        messages = new ArrayList<Message>();
    }

    @Override
    protected Boolean doInBackground(User... params){           
        try {
            CloudConnect cConn = new CloudConnect(sAddress);
            this.messages = cConn.getAll(params[0]);
            return true;
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return false;
    }

    @Override
    protected void onPostExecute(Boolean result)    {
        if (true)
        {
            handleMessageList(messages);
        }
    }
}

使用CloudConnect类获取单个Json对象或对象数组:

public class CloudConnect {

private String site;
private InputStream is;
private Gson gson;

public CloudConnect(String site) throws MalformedURLException   {
    this.site = site;
    this.gson = new GsonBuilder().setDateFormat("yyyy-MM-dd").create();
    is = null;
}


public synchronized Message get(Message m) throws IOException   {   
    Message msg = null;
    HttpClient client = new DefaultHttpClient();
    HttpPost post = new HttpPost(this.site);
    post.setEntity(new UrlEncodedFormEntity(validateMessage(m)));

    HttpResponse response = client.execute(post);
    StatusLine status = response.getStatusLine();

    if ( status.getStatusCode() == 200) {
        HttpEntity entity = response.getEntity();
        is = entity.getContent();
        try {
            Reader read = new InputStreamReader(is);
            String str = (String) gson.fromJson(read, Object.class);
            JsonParser parser = new JsonParser();
            JsonElement jElem = parser.parse(str);
            JsonObject jObject = (JsonObject) jElem;

            msg = gson.fromJson(jObject, Message.class);
            is.close();

        }   catch (Exception e) {
            e.printStackTrace();
        }
    }
    return msg;
}

public synchronized List<Message> getAll(Message m) throws IOException  {       
    List<Message> mList = new ArrayList<Message>();
    HttpClient client = new DefaultHttpClient();
    HttpPost post = new HttpPost(this.site);
    post.setEntity(new UrlEncodedFormEntity(validateMessage(m)));

    HttpResponse response = client.execute(post);
    StatusLine status = response.getStatusLine();

    if ( status.getStatusCode() == 200) {
        HttpEntity entity = response.getEntity();
        is = entity.getContent();
        try {
            BufferedReader reader = new BufferedReader(new InputStreamReader(is));
            JsonArray jArray = null;
            JsonReader jReader = new JsonReader(reader);
            jReader.setLenient(true);
            JsonParser parser = new JsonParser();
            if (parser.parse(jReader).isJsonArray()){
                jArray = parser.parse(jReader).getAsJsonArray();

                if ( m instanceof User ){
                    for (JsonElement je : jArray)   {
                        mList.add(gson.fromJson(je, Job.class));
                        Log.d("json", je.toString());
                    }
                } else if ( m instanceof Job ) {
                    for (JsonElement je : jArray)   {
                        mList.add(gson.fromJson(je, Update.class));
                        Log.d("json", je.toString());
                    }
                }
            }   else {
                JsonElement jElem = parser.parse(jReader);
                JsonObject jObject = (JsonObject) jElem;
                Error msg = null;
                msg = gson.fromJson(jObject, Error.class);
                mList.add(msg);
            }
            is.close();

        }   catch (Exception e) {
            e.printStackTrace();
        }
    }
    return mList;
}

以及用于检查标记的PHP代码:

if ( isset($_POST['messageType']) && $_POST['messageType'] != "") {

$tag = $_POST['messageType'];
//
//various functions depending on messageType tag here.  Such as getUser($email).
//functions appear to work fine if the PHP doesn't find the initial conditions 
//false and skips them all.
} else  {
$response["success"] = 0;
    $response["error"]["errorMsg"] = "Tags are null";
    $response["error"]["messageType"] = $tag;
            $response["error"]["varDump"] = var_dump($_POST);

echo json_encode($response);
}

参考方案

好吧,现在我明白了。您在Android代码上没有问题,但是在PHP中(我因为TAG Android而来到这里)。我不是PHP方面的专家,但是请记住isset ($ _POST ['messageType']) returns true only if the payload of your POST request contains something like: messageType=some_value.,因此您需要检查传递给post.setEntity(value)的值是否采用这种格式。

您可以使用Fiddler之类的工具查看请求的负载并进行正确调试。

使用Java和PHP的BCrypt,发送加密的密码并对其进行解码 - java

我想使用Android应用程序将加密的密码发送到存储该密码的服务器上的PHP文件。到目前为止,这也有效。在登录时,我再次将加密的密码发送到服务器,PHP文件应找出密码是否正确。但是如果我现在如果(password_verify($ userPassword,$ hash)){}那么该功能需要真实密码,而不需要加密密码。我现在如何比较加密和加密?还是只需要将可…

我可以只加载一次大量数据并在每个请求中使用它吗? - java

有没有一种方法可以将大数据对象加载到内存中,通常仅在每次请求时才将其加载一次?在Java中,可以在加载Servlet时实例化Servlet中的对象,但是一旦到达该对象,就可以在任何请求中使用它。示例如下。可以用PHP完成吗?public class SampleServlet extends HttpServlet { private static Huge…

包含php的js函数在未调用时执行 - java

我的页面标签中包含以下代码:<script> function LogInOut() { // Get the current login status alert("executing LogInOut"); $loginStatus = "<?php echo $_SESSION['login&#…

Java-搜索字符串数组中的字符串 - java

在Java中,我们是否有任何方法可以发现特定字符串是字符串数组的一部分。我可以避免出现一个循环。例如String [] array = {"AA","BB","CC" }; string x = "BB" 我想要一个if (some condition to tell wheth…

PHP Count数组元素 - php

嗨,有人可以解释为什么这会返回“数组由0个元素组成”。 :$arr = array(1,3,5); $count = count($arr); if ($count = 0) { echo "An array is empty."; } else { echo "An array has $count elements.…