2016-03-25 44 views
3

我创建应用程序发送文本到服务器,并检查if(text != null)返回新的文本值。如何从PHP服务器获取字符串到Android?

我的代码要做到这一点,如:

在PHP服务器:

$text = $_POST["text1"]; 
if($text != null){ 
    echo "Contact1-----".$text."-----10h49 25/03/2016 at New York city"; 
} else{ 
    echo ""; 
}      

之前,我保存在服务器上的文件和所有数据写入该文件。 这时候,我想让它回到android数据,不需要保存到文件。 而在Android的代码是:

final String scripturlstring = "http://www.anyexample.com/main.php"; 

AddContactActivity contact; 
public void sendToServer(final String text){ 
    contact = new AddContactActivity(); 
    new Thread(new Runnable() { 
     @Override 
     public void run() { 
      try { 

       String textparam = "text1=" + URLEncoder.encode(text, "UTF-8"); 

       URL scripturl = new URL(scripturlstring); 
       HttpURLConnection connection = (HttpURLConnection) scripturl.openConnection(); 
       connection.setDoOutput(true); 
       connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); 
       connection.setFixedLengthStreamingMode(textparam.getBytes().length); 
       contentWriter.write(textparam); 
       contentWriter.flush(); 
       contentWriter.close(); 

       InputStream answerInputStream = connection.getInputStream(); 
       final String answer = getTextFromInputStream(answerInputStream); 

       if(answer!="") { 
        String[] contactInfo = answer.split("-----"); 

        contact.insertContact(contactInfo[0], contactInfo[1], contactInfo[2], "", ""); 
       } 
       answerInputStream.close(); 
       connection.disconnect(); 


      } catch (MalformedURLException e) { 
       e.printStackTrace(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 
    }).start(); 

} 



public String getTextFromInputStream(InputStream is) { 
    BufferedReader reader = new BufferedReader(new InputStreamReader(is)); 
    StringBuilder stringBuilder = new StringBuilder(); 

    String currentLine; 
    try { 
     while ((currentLine = reader.readLine()) != null) { 
      stringBuilder.append(currentLine); 
      stringBuilder.append("\n"); 
     } 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

    return stringBuilder.toString().trim(); 
} 

我不知道为什么answernull

我认为它必须返回如数据:

Contact1 $text 10h49 25/03/2016 at New York city

+0

如果您在浏览器中打开anyexample.com/main.php?text1=asd会发生什么? – Eduard7

+0

@ Eduard7它没有显示任何东西。你认为发生在PHP文件? – vanloc

+0

尝试将$ _POST [“text1”]更改为$ _GET [“text1”] – Eduard7

回答

1

先离开Android部分和调试你的PHP代码。你不张贴的数据,所以这肯定是不对的:

$text = $_POST["text1"]; 

使用$ _GET [ “text1” 中]代替:

$text = $_GET["text1"]; 

您可以使用$ _REQUEST,虽然,但国际海事组织这是一个坏练习,因为它合并了$ _GET,$ _POST和$ _COOKIE变量。

+0

感谢@ Eduard7,我使用类sendToServer(最终字符串文本)'张贴一行并希望通过'echo'新字符串值从PHP服务器接收一个新字符串。 收到新的一行后,我的应用程序将继续另一个过程。 – vanloc

1

更换

$text = $_POST["text1"];

$text = $_REQUEST['text1']; 
+0

谢谢@Dhavalkumar Solanki:我试过你的改变。在Android客户端中,我没有收到来自服务器PHP的任何值。我认为'getTextFromInputStream'类中存在一个问题,因为在这个类获取文件中的值之前。目前,我直接从PHP服务器中的'echo'获取值。 – vanloc

+0

嗨ioewi一些时间日志不应该为Http方法工作,所以如果你能够调试然后调试和检查响应,我有相同的问题之前一段时间,日志不应该工作,但是当我在textview中设置它工作完美 –

+0

非常感谢你许多。我不使用'TextView'因为很多问题。简单来说,我想检查服务器和服务器中的“文本”,并用'echo'新字符串'text'来响应。我收到这一行,并在我的申请继续过程。 – vanloc

0

设置connection.setDoInput(true);

+0

感谢@mallaudin,我解决了我的问题。 – vanloc

相关问题