我遇到了问题而且真的不知道出了什么问题: - /
我点击按钮后调用了一个简单的函数
public void clickFunc(View view) {
StringBuilder result = new StringBuilder();
try {
URL url = new URL("http://google.com");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setReadTimeout(15000 /* milliseconds */);
conn.setConnectTimeout(15000 /* milliseconds */);
conn.setRequestMethod("POST");
conn.setDoInput(true);
conn.setDoOutput(true);
conn.connect();
int responseCode=conn.getResponseCode();
if (responseCode == HttpsURLConnection.HTTP_OK) {
InputStream in = new BufferedInputStream(conn.getInputStream());
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
String line;
while ((line = reader.readLine()) != null) {
result.append(line);
}
in.close();
httpTxt.setText(result.toString());
}
else {
httpTxt.setText("false : "+responseCode);
}
}
catch(Exception e){
httpTxt.setText("Exception: " + e.getMessage());
}
}
但是点击后我的输出是Exception:null
在清单中我有<uses-permission android:name="android.permission.INTERNET" />
此代码与我在此处或互联网上提及的所有代码相同: - /
httptxt是我的texview,用于页面输出
谢谢
答案 0 :(得分:2)
好的,我不知道我必须在后台做它...它现在正在工作,谢谢!
public void clickFunc(View view) {
new SendPostRequest().execute();
}
private class SendPostRequest extends AsyncTask<Void, Void, String> {
protected String doInBackground (Void... params) {
StringBuilder result = new StringBuilder();
HttpURLConnection conn = null;
BufferedReader reader;
try {
URL url = new URL("http://stackoverflow.com");
conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setReadTimeout(15000);
conn.setConnectTimeout(15000);
conn.setDoInput(true);
conn.setDoOutput(true);
conn.connect();
int responseCode=conn.getResponseCode();
if (responseCode == HttpsURLConnection.HTTP_OK) {
InputStream in = new BufferedInputStream(conn.getInputStream());
reader = new BufferedReader(new InputStreamReader(in));
String line;
while ((line = reader.readLine()) != null) {
result.append(line);
}
in.close();
return(result.toString());
}
else {
return("false : "+responseCode);
}
}
catch(Exception e){
return("Exception: " + e.getMessage());
}
}
protected void onPostExecute(String s) {
super.onPostExecute(s);
httpTxt.setText(s);
}
}
我不是一个Android程序员,所以即使它基本我也不知道,对不起家伙:)
关于我的应用程序如果你感兴趣我为什么想要它 - 我读了一个条形码,转到php脚本,如果有这个代码则查看数据库并返回true或false
答案 1 :(得分:0)
android上有很多线程,你什么时候点击http请求这意味着它可以与另一个线程一起工作,所以如果你想点击一个http请求你必须把它放在异步类下因为它&#39; sa长操作,最后如果你想通过http响应改变
你必须把你的更改放在UI线程中,这意味着它应该在Handler
或RunOnUiThread
下,因为异步任务不能直接访问UI线程
如果你不想使用Asynctask和runUiThred都不是处理程序
使用volley谷歌的API允许