对PHP服务器Android Studio的HTTP POST请求
公共类MainActivity扩展了AppCompatActivity{对PHP服务器Android Studio的HTTP POST请求,android,Android,公共类MainActivity扩展了AppCompatActivity{ EditText editmsg , editmail ; TextView content ; String Message , Email ; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activit
EditText editmsg , editmail ;
TextView content ;
String Message , Email ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editmsg = (EditText) findViewById(R.id.editMessage);
editmail = (EditText) findViewById(R.id.editMail);
Button btnsubmit = (Button) findViewById(R.id.btnSubmit);
btnsubmit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
GetText();
} catch (Exception ex) {
content.setText(" Url Exception!");
}
}
});
}
public void GetText()throws UnsupportedEncodingException {
Message = editmsg.getText().toString();
Email = editmail.getText().toString();
String data = URLEncoder.encode("message", "UTF-8")
+ "=" + URLEncoder.encode(Message, "UTF-8");
data += "&" + URLEncoder.encode("email", "UTF-8") + "="
+ URLEncoder.encode(Email, "UTF-8");
String text = "";
BufferedReader reader=null;
HttpURLConnection urlConnection = null;
try
{
// Defined URL where to send data
URL url = new URL("http://nitesh.com/feedback/add.php");
// Send POST data request
urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setRequestMethod("POST");
urlConnection.setDoOutput(true);
OutputStreamWriter wr = new OutputStreamWriter(urlConnection.getOutputStream());
wr.write( data );
wr.flush();
// Get the server response
reader = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));
StringBuilder sb = new StringBuilder();
String line = null;
// Read Server Response
while((line = reader.readLine()) != null)
{
// Append server response in string
sb.append(line + "\n");
}
text = sb.toString();
}
catch(Exception ex)
{
}
finally
{
try
{
reader.close();
}
catch(Exception ex) {}
}
// Show response on activity
content.setText( text );
}
}
我不知道什么是错误的代码,当我点击发送按钮,它显示不幸的是,HTTP已经停止(看起来就像应用程序崩溃)。
请检查我的代码并告诉我我做错了什么。我立刻看到的一件事是,您正在主UI线程(在
onCreate
中)中发出请求。这是不允许的,因为网络连接通常需要一些时间才能完成。日志猫中也应该有关于此的错误消息
您应该做的是在单独的线程中提出请求。您可以使用AsyncTask
或Thread
来完成此任务。谷歌
UPD:
关于如何在Java中使用线程的示例。方法run
将异步执行
new Thread(new Runnable(){
@Override
public void run(){
GetText();
}
}).start();
下次,请将logcat错误包括在问题中。考虑将其用于网络通信
您将获得一个简单的api,所有请求都将被包装到正确的线程中。您可以使用
异步任务来完成此任务。
致命异常:main java.lang。NullPointerException@Nitesh之所以会出现这种情况,是因为在catch块中,content
为空。在onCreate
中定义它。如果您不介意,请更正我的代码。这样我才能了解整个情况situation@NiteshKhaitan很抱歉迟了答复。请看编辑。如果你要为Android编程,你应该习惯在不同的线程中创建和做事情。使用专门的库来实现这一点是过分的。这不是线程库,而是Android和Java的类型安全HTTP客户端