带有POST数据的Java HTTP请求
我用java编写了以下代码,通过POST变量将一些数据发送到我网站的PHP文件中,然后我想获得这个网站的源代码带有POST数据的Java HTTP请求,java,android,http-request,Java,Android,Http Request,我用java编写了以下代码,通过POST变量将一些数据发送到我网站的PHP文件中,然后我想获得这个网站的源代码 public DatabaseRequest(String url, IDatabaseCallback db_cb) { this.db_cb = db_cb; site_url = url; client = new DefaultHttpClient(); reques
public DatabaseRequest(String url, IDatabaseCallback db_cb)
{
this.db_cb = db_cb;
site_url = url;
client = new DefaultHttpClient();
request = new HttpPost(site_url);
responseHandler = new BasicResponseHandler();
nameValuePairs = new ArrayList<NameValuePair>(0);
}
public void addParameter(List<NameValuePair> newNameValuePairs)
{
nameValuePairs = newNameValuePairs;
}
public void run()
{
db_cb.databaseFinish(getContent());
}
public String[] getContent()
{
String result = "";
try {
request.setEntity(new UrlEncodedFormEntity(nameValuePairs));
result = client.execute(request, responseHandler);
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
String[] result_arr = result.trim().split("<br>");
for (int i = 0; i < result_arr.length; i++)
{
result_arr[i] = result_arr[i].trim();
}
return result_arr;
}
公共数据库请求(字符串url,IDatabaseCallback db_cb)
{
this.db_cb=db_cb;
site_url=url;
client=新的DefaultHttpClient();
请求=新的HttpPost(站点url);
responseHandler=新的BasicResponseHandler();
nameValuePairs=新的ArrayList(0);
}
public void addParameter(列出newNameValuePairs)
{
nameValuePairs=新的nameValuePairs;
}
公开募捐
{
db_cb.databaseFinish(getContent());
}
公共字符串[]getContent()
{
字符串结果=”;
试一试{
setEntity(新的UrlEncodedFormEntity(nameValuePairs));
结果=client.execute(请求、响应句柄);
}捕获(客户端协议例外e){
e、 printStackTrace();
}捕获(IOE异常){
e、 printStackTrace();
}
字符串[]result\u arr=result.trim().split(“
”);
对于(int i=0;i
当我想要运行此代码时,eclipse会抛出以下错误消息:
试试这个:
// executes the request and gets the response.
HttpResponse response = client.execute(httpPostRequest);
// get the status code--- 200 = Http.OK
int statusCode = response.getStatusLine().getStatusCode();
HttpEntity httpEntity = response.getEntity();
responseBody = httpEntity.getContent();
if (statusCode = 200) {
// process the responseBody.
}
else{
// there is some error in responsebody
}
编辑:处理不支持的编码异常
在发出HTTP请求之前,您需要对post数据进行编码,以便将所有字符串数据转换为有效的url格式
// Url Encoding the POST parameters
try {
httpPostRequest.setEntity(new UrlEncodedFormEntity(nameValuePair));
}
catch (UnsupportedEncodingException e) {
// writing error to Log
e.printStackTrace();
}
如何运行此代码?对于responseBody,可以使用字符串responseBody=EntityUtils.toString(response.getEntity());这会引发不受支持的编码错误(uft-8)。我必须为我的PHP文件设置不同的编码类型吗?你能粘贴logcat吗?