我正在浏览此网站http://givemepass.blogspot.hk/2011/12/http-
server.html
尝试使用android应用程序连接PHP服务器来获取消息。
GetServerMessage.java
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
public class GetServerMessage {
public String stringQuery(String url){
try
{
HttpClient httpclient = new DefaultHttpClient();
HttpPost method = new HttpPost(url);
HttpResponse response = httpclient.execute(method);
HttpEntity entity = response.getEntity();
if(entity != null){
return EntityUtils.toString(entity);
}
else{
return "No string.";
}
}
catch(Exception e){
return "Network problem";
}
}
}
GetPhpServerMessageDemoActivity.java
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class GetPhpServerMessageDemoActivity extends Activity {
/** Called when the activity is first created. */
private TextView textView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
textView = (TextView)findViewById(R.id.text_view);
GetServerMessage message = new GetServerMessage();
String msg = message.stringQuery("http://192.168.1.88/androidtesting.php");
textView.setText("Server message is "+msg);
}
}
我试图从该站点下载Android应用程序项目http://uploadingit.com/file/d4632ekfpwjiupyn/GetPhpServerMessageDemo2.zip并在我的手机上运行,这是可行的。但是,当我开始一个新项目(Minimuim所需的SDK:API8,目标SDK:API17,编译为:API17)并复制这两个Java代码时。我已经添加了权限android.permission.INTERNET
,所以我不知道问题出在哪里,我只知道在运行时HttpResponse response = httpclient.execute(method);
出现错误并返回了字符串“网络问题”。
您正在ui线程上运行与网络相关的操作。您将获得NetworkOnMainThreadException
邮政蜂窝。
使用Thread
或Asynctask
调用asynctask
new TheTask().execute("http://192.168.1.88/androidtesting.php");
异步任务
http://developer.android.com/reference/android/os/AsyncTask.html
class TheTask extends AsyncTask<String,String,String>
{
@Override
protected String onPostExecute(Void result) {
// TODO Auto-generated method stub
super.onPostExecute(result);
// update textview here
textView.setText("Server message is "+result);
}
@Override
protected void onPreExecute() {
// TODO Auto-generated method stub
super.onPreExecute();
}
@Override
protected String doInBackground(String... params) {
try
{
HttpClient httpclient = new DefaultHttpClient();
HttpPost method = new HttpPost(params[0]);
HttpResponse response = httpclient.execute(method);
HttpEntity entity = response.getEntity();
if(entity != null){
return EntityUtils.toString(entity);
}
else{
return "No string.";
}
}
catch(Exception e){
return "Network problem";
}
}
}
api 23中不推荐使用Update HttpClient HttpUrlConnection
。
http://developer.android.com/reference/java/net/HttpURLConnection.html
问题内容: 我正在使用以下代码从Web服务器请求xml: 当我调用httpclient.execute(httpget,responseHandler)时,我得到一个clientProtocolException。该URL在Web浏览器中工作正常,它返回xml,然后浏览器显示它。 有什么想法为什么我会得到一个clientProtocolException而浏览器却能很好地处理它? 编辑1: 查看协
我在Android v4中读取APN时遇到问题。2(是读,不是写APN),它抛出了一个安全异常: 没有写入APN设置的权限:用户10068和当前进程都没有android。准许写入APN设置。 以前所有平台上都使用相同的代码,有人知道有什么解决方法吗? 谢谢
我正在尝试在java中使用httpPost请求(通过MultipartEntityBuilder)上传文件。但是我得到了一个软件导致的连接中止:套接字写入错误。 这是我的httpPost正文(在wireShark中) 代码端为: 和错误: 有什么想法吗?谢谢大家。
问题内容: 我正在编写一个Android 2.2应用程序,该应用程序将JSON严格性过帐到ReSTfull Web服务。 Fiddler对Web服务的调用具有与预期相同的Json返回,而对ASPX Web应用程序具有与预期的相同Json返回。 当我查看服务器日志时,可以看到服务器使用307重定向响应初始POST动词,然后立即响应GET和405错误。 Fiddler和aspx应用程序记录一个307重
有没有办法在Android4.2上关闭通知栏? 我使用的代码只适用于以前的Android版本: 请帮帮我。。。