Java 在android中发布JSON

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

我想在android中通过HttpClient发布字符串数据 但在收到响应状态代码503-服务不可用和 返回响应作为我们的url的Html代码

我在JAVA应用程序中写入以下代码并返回数据,但当我在Android应用程序中写入相同的代码时,我收到一个异常文件I/O not found,我对这种情况感到困惑:

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
  • 一旦你有了数据,你就可以随心所欲地操作它

发布日志猫错误日志猫?好的,如果服务器发出503状态,我主要会对服务器日志感兴趣,因为它会指出503错误的原因。谢谢你的重播,但是api不能从url获取数据,他们会处理它什么类型的数据请求以及获取什么数据。
     @Override
public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView("your layout");



    if ("check here where network/internet is avaliable") {

        new HTTPdemo().execute("");
    }

   }