我需要一些帮助,我之前使用过HTTP请求但是当我使用AJAX时通过JavaScript,它看起来很相似,但我并不完全确定如何正确地完成所有操作。我已经看过一些人的代码和东西,但我不确定两件事。首先,我想通过POST发送一个int,以便识别应该调用哪个查询以及应该通过响应发回哪些数据。其次,我不确定网址,我是否需要域名?我只需要连接到我在XAMPP上使用的机器上的服务器。我不完全确定怎么做?我是否只使用我的机器的IP与端口或其他东西放置URL?
所以,这就是我尝试过的事情:
public class Request {
private static Request instance;
private static String URL;
private String requestResult;
private String error;
private Request(){
this.URL = "http://IPAddress or Server Address/Android Webservice/webservice.php"; /* not sure what I should use here, I'm using an apache server */
this.error = new String();
this.requestResult = new String();
}
public static Request getRequest(){
if(instance == null){
instance = new Request();
}
return instance;
}
public void sendHttpPostRequest(String option){
HttpClient client = new DefaultHttpClient();
HttpPost postRequest = new HttpPost(URL);
HttpResponse serverResponse;
String jsonToSend = "message={identifer:" + option + "}";
NameValuePair parameter = new BasicNameValuePair("data", jsonToSend);
try {
StringEntity entity = new StringEntity(jsonToSend);
postRequest.addHeader("content-type", "application/x-www-form-urlencoded");
postRequest.setEntity(entity);
serverResponse = client.execute(postRequest);
} catch (Exception e){
}
}
public String getURL() {
return this.URL;
}
public String getResult(){
return this.requestResult;
}
}
我在课堂上得到它,因为我希望能够在任何地方调用它,而且我需要在我的android应用程序中的多个视图中调用它。我想说这里最重要的部分是`sendHttpPostRequest。但是,我不确定如何使用该响应来做任何事情。通常使用AJAX我只是得到响应文本并从那里开始,但这不起作用。我已经看过各种各样的例子,但我很难得到它们,而且其中一些做了很多我不确定需要的东西。
例如,这是我的PHP文件:
<?php
$obj = json_decode($_POST['message']);
$obj = json_decode($dataReceived,true);
$data = array("data","some other data","the last piece of data");
json_encode('data'=>$data);
echo $data;
?>
现在它看起来像这样,因为这是一个简单的测试,但最终目标应该是返回一个关联数组,该数组是我的数据库查询的结果。我知道如何轻松地做到这一点,但我不知道如何发送请求以获取此文件以返回该内容。我不知道如何在Java中解析JSON,尤其是关联数组,我也不确定如何配置我的服务器以允许来自Android设备的连接。
那么究竟需要在URL中连接到我的PC?我如何解析JSON响应,然后将其转换为我可以放在我的Android应用程序中的数据?如何使用此设备移动到任何地方,并从远离我的服务器的位置检索此数据?
我希望这不需要付款,我的意思是服务器毕竟是在我的电脑上。