Java 在android中发布JSON
我想在android中通过HttpClient发布字符串数据 但在收到响应状态代码503-服务不可用和 返回响应作为我们的url的Html代码 我在JAVA应用程序中写入以下代码并返回数据,但当我在Android应用程序中写入相同的代码时,我收到一个异常文件I/O not found,我对这种情况感到困惑:Java 在android中发布JSON,java,php,android,json,Java,Php,Android,Json,我想在android中通过HttpClient发布字符串数据 但在收到响应状态代码503-服务不可用和 返回响应作为我们的url的Html代码 我在JAVA应用程序中写入以下代码并返回数据,但当我在Android应用程序中写入相同的代码时,我收到一个异常文件I/O not found,我对这种情况感到困惑: public void goButton(View v) { try{ URL url = new URL("https://xxxxxxxxx"); H
public void goButton(View v)
{
try{
URL url = new URL("https://xxxxxxxxx");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
Test ts= new ApiRequest("null","getUserbyID",new String[] { "66868706" });
String payLoad = ts.toString(); //toSting is override method that create //JSON Object
System.out.println("--->>> " + payLoad);
conn.setDoOutput(true);
OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
System.out.println("=================>>> "+ payLoad);
wr.write(payLoad);
wr.flush();
BufferedReader rd = new BufferedReader(new nputStreamReader(conn.getInputStream()));
String line;
while ((line = rd.readLine()) != null) {
System.out.println("-->> " + line);
response += line;
}
wr.close();
rd.close();
System.out.println("=================>>> "+ response);
} catch (Exception e) {
e.printStackTrace();
System.out.println("=================>>> " + e.toString());
throw new RuntimeException(e);
}
我尝试将此代码放入AsynTask线程中,但收到相同的响应状态代码。
我写了以下Android代码作为示例数据
public void goButton(View v)
{
try{
new Thread(new Runnable() {
public void run() {
HttpClient client = new DefaultHttpClient();
HttpConnectionParams.setConnectionTimeout(client.getParams(),
10000); // Timeout Limit
HttpResponse response;
String url = "https://xxxxxxxxxxxxx";
JSONObject json = new JSONObject();
try {
HttpPost post = new HttpPost(url);
post.setHeader("Content-type", "application/json");
json.put("service","null");
json.put("method", getUserByID.toString());
json.put("parameters", "1111");
System.out.println(">>>>>>>>>>>" + json.toString());
StringEntity se = new StringEntity(json.toString());
se.setContentType(new BasicHeader(HTTP.CONTENT_TYPE,
"application/json"));
post.setEntity(se);
String response = client.execute(post);
if (response != null) {
String temp = EntityUtils.toString(response.getEntity());
System.out.println(">>>>>>>>>>>" + temp);
}
} catch (Exception e) {
e.printStackTrace();
System.out.println(">>>>>>>>>>>" + e.getMessage());
}
}
}).start();
}
请帮我找到这个问题的解决方案:(
提前感谢您这里有一段代码片段,希望能对您有所帮助 1) 承载http get服务的函数
private String SendDataFromAndroidDevice() {
String result = "";
try {
HttpClient httpclient = new DefaultHttpClient();
HttpGet getMethod = new HttpGet("your url + data appended");
BufferedReader in = null;
BasicHttpResponse httpResponse = (BasicHttpResponse) httpclient
.execute(getMethod);
in = new BufferedReader(new InputStreamReader(httpResponse
.getEntity().getContent()));
StringBuffer sb = new StringBuffer("");
String line = "";
while ((line = in.readLine()) != null) {
sb.append(line);
}
in.close();
result = sb.toString();
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
2) 扩展AsyncTask的类
private class HTTPdemo extends
AsyncTask<String, Void, String> {
@Override
protected void onPreExecute() {}
@Override
protected String doInBackground(String... params) {
String result = SendDataFromAndroidDevice();
return result;
}
@Override
protected void onProgressUpdate(Void... values) {}
@Override
protected void onPostExecute(String result) {
if (result != null && !result.equals("")) {
try {
JSONObject resObject = new JSONObject(result);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
这段代码片段,
Android设备将通过URL向服务器发送数据
现在,服务器需要从URL获取数据
我提供的代码片段的工作方式如下:
1) Android设备将URL+数据发送到服务器
2) 服务器[假设使用ASP.NET平台]接收数据并给出确认信息
现在,应该在客户端(Android)编写的代码已经提供给您,在服务器上接收数据的后面部分是
- 服务器需要接收数据
- 应该使用Web服务来实现这一点
- 在服务器端实现Web服务
- 每当android推送URL+数据时,就会调用webservice
- 一旦你有了数据,你就可以随心所欲地操作它
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView("your layout");
if ("check here where network/internet is avaliable") {
new HTTPdemo().execute("");
}
}