2013-08-14 2 views
0

Как я могу получить данные с PHP на Android?Как я могу получить данные из PHP в Android TextView?

вы можете мне помочь ?, как я могу показать результат PHP для андроид TextView это мой PHP код, который я должен использовать JSON на этом ...

<? php 
mysql_connect("localhost","root",""); 

mysql_select_db("mydatabase"); 

$query = "SELECT SUM(OrderPrice) as total FROM tbl_user"; 
$result = mysql_query($query); 


while($row = mysql_fetch_assoc($result)) 
{ 
$new_arr[] = $row['total']; 
} 
echo json_encode($new_arr); 

?> 
+0

Вы должны разобрать данные через JSON на вашем конце –

+0

вы можете показать мне коды? –

+0

Вам нужно сделать GET или POST HTTPConnection на веб-сервере для получения данных с вашего веб-сервера. Затем вам нужно проанализировать данные с помощью разбора JSON на конце Android. – Arshu

ответ

0

Я боюсь, что я не могу оставить комментарий, но это руководство, безусловно, поможет вам. Короче говоря, вы используете HttpUrlConnection, чтобы прочитать страницу JSON, а затем проанализировать ее, как хотите, с помощью org.json.JSONObject.

http://ihofmann.wordpress.com/2012/08/09/restful-web-services-with-json-in-android/

0

Скажи это ур PHP файл db.php с базой данных «сделки» и таблица «города», поля CITY_ID и city_name

<?php 

$con = mysql_connect('localhost', 'root', ''); 

if (!$con) 
{ 
die("could not connect: " + mysql_error()); 
} 
mysql_select_db("deal", $con); 

$result=mysql_query("SELECT * FROM city ", $con); 
while ($row = mysql_fetch_assoc($result)) 
{ 
$output[]=$row; 
} 
print(json_encode($output)); 
mysql_close($con); 
?> 
+0

Я использую эти коды, это говорит об ошибках. Анализ данных org.json.JSONException: Значение

0

Вопрос заключается в том, будут ли вы читать PHP прямо на ваше устройство или запрашивать его со своего веб-сервера. Вы можете сделать первый, но вы должны установить веб-сервер, возможно, apache на вашем устройстве, поскольку «localhost и 127.0.0.1» может работать без веб-сервера, вы можете использовать следующий класс или библиотеку для получения данных от него, это может быть плотина ! Второй один легко, положить PHP на вашем сервере и клиентское приложение называют его по HTTP/HTTPS и т.д.:

  1. Простой подключения:

    public static class Connector extends AsyncTask<String, Object, Object> { 
    private static final int DEFAULT_CNN_TIME_OUT = 1000 * 20; 
    private static String  USER_AGENT; 
    private static final int[] LOCK     = new int[1]; 
    private String    mUrl; 
    private byte[]    mBody; 
    
    public Connector(Context _cxt) { 
        super(); 
        if(TextUtils.isEmpty(USER_AGENT)) { 
         // Without this, the default provided by API will be like "Dalvik/1.6.0 (Linux; U; Android 4.0.4; BASE_Lutea_3 Build/IMM76D)" . 
         USER_AGENT = new WebView(_cxt).getSettings().getUserAgentString(); 
        } 
    } 
    
    /* 
    * Convenient function to execute the connecting task. 
    */ 
    public void submit(String _url) { 
        this.execute(_url); 
    } 
    
    @Override 
    protected Object doInBackground(String... _params) { 
        mUrl = _params[0]; 
        Object ret = null; 
        HttpURLConnection conn = null; 
        try { 
         synchronized(LOCK) { 
          InputStream in = null; 
          conn = connect(mUrl); 
          // if we don't do conn.setRequestProperty("Accept-Encoding", "gzip"), the wrapper GZIPInputStream can be removed. 
          onConnectorInputStream(in = new GZIPInputStream(conn.getInputStream())); 
          in.close(); 
          in = null; 
         } 
        } 
        catch(Exception _e) { 
         ret = _e; 
        } 
        finally { 
         if(conn != null) { 
          conn.disconnect(); 
          conn = null; 
         } 
        } 
        return ret; 
    } 
    
    @Override 
    protected void onPostExecute(Object _result) { 
        if(_result instanceof SocketTimeoutException) { 
         onConnectorConnectTimout(); 
        } else if(_result instanceof ConnectorPostConnectException) { 
         onConnectorError(((ConnectorPostConnectException) _result).getStatus()); 
        } else if(_result instanceof Exception) { 
         onConnectorInvalidConnect((Exception) _result); 
        } else if(_result == null) { 
         onConnectorFinished(); 
        } 
        handleEstablishedConnection(); 
    } 
    
    /* 
    * Internal help and test function. 
    */ 
    private static void handleEstablishedConnection() { 
        try { 
         Log.v(TAG, "Connection is established."); 
         CookieStore cs = CookieManager.getInstance().getCookieStore(); 
         if(cs != null) { 
          Log.v(TAG, "------------cookies------------"); 
          List<Cookie> list = cs.getCookies(); 
          if(list != null && list.size() > 0) { 
           StringBuilder cookieBuilder = new StringBuilder(); 
           for(Cookie c : list) { 
            cookieBuilder 
              .append(c.getName().trim()) 
              .append("=>") 
              .append(c.getValue().trim()) 
              .append("=>") 
              .append(c.getDomain()); 
            Log.v(TAG, cookieBuilder.toString()); 
            cookieBuilder.delete(0, cookieBuilder.length() - 1); 
           } 
           cookieBuilder = null; 
          } else { 
           Log.v(TAG, "Empty cookies."); 
          } 
          cs = null; 
          list = null; 
         } 
        } 
        catch(Exception _e) { 
         Log.e(TAG, "Error in handleEstablishedConnection: " + _e.getMessage()); 
        } 
        finally { 
        } 
    } 
    
    private HttpURLConnection connect(String _urlStr) throws Exception { 
        URL url = null; 
        HttpURLConnection conn = null; 
        try { 
         try { 
          url = new URL(_urlStr); 
         } 
         catch(MalformedURLException e) { 
          throw new IllegalArgumentException("Invalid url: " + _urlStr); 
         } 
         conn = preConnect(url); 
         doConnect(conn); 
         conn = postConnect(conn); 
        } 
        catch(Exception _e) { 
         throw _e; 
        } 
        finally { 
         url = null; 
        } 
        return conn; 
    } 
    
    private HttpURLConnection preConnect(URL url) throws Exception { 
        HttpURLConnection conn; 
        conn = (HttpURLConnection) url.openConnection(); 
        conn.setUseCaches(false); 
        // http://www.aswinanand.com/2009/01/httpurlconnectionsetfollowredirects-bug/comment-page-1/#comment-13330 
        // see the url to learn more about the problem of redirect 
        conn.setInstanceFollowRedirects(false); 
        conn.setDoOutput(true);// allows body 
        mBody = getBody(); 
        if(hasBody()) { 
         conn.setFixedLengthStreamingMode(mBody.length); 
        } 
        conn.setRequestMethod("POST"); 
        conn.setRequestProperty("Connection", "Keep-Alive"); 
        conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8"); 
        conn.setRequestProperty("User-Agent", USER_AGENT); 
        conn.setRequestProperty("Accept-Encoding", "gzip");// force server to send in Content-Encoding: gzip . 
        String cookies = onCookie(); 
        if(!TextUtils.isEmpty(cookies)) { 
         conn.setRequestProperty("Cookie", onCookie()); 
         cookies = null; 
        } 
        conn.setConnectTimeout(onSetConnectTimeout()); 
        return conn; 
    } 
    
    /* 
    * Convenient function to check the exiting of body. 
    */ 
    private boolean hasBody() { 
        return mBody != null && mBody.length > 0; 
    } 
    
    private void doConnect(HttpURLConnection conn) throws Exception { 
        OutputStream out; // the outgoing stream 
        out = conn.getOutputStream(); 
        if(hasBody()) { 
         out.write(mBody); 
        } 
        out.close(); 
        out = null; 
    } 
    
    private HttpURLConnection postConnect(HttpURLConnection conn) throws Exception { 
        int status = conn.getResponseCode(); 
        if(status != HttpURLConnection.HTTP_OK) { 
         throw new ConnectorPostConnectException(status); 
        } else { 
         CookieManager.getInstance().put(conn.getURL().toURI(), conn.getHeaderFields()); 
         return conn; 
        } 
    } 
    
    private byte[] getBody() { 
        byte[] body = null; 
        String bodyString = onSetBody(); 
        if(!TextUtils.isEmpty(bodyString)) { 
         body = bodyString.getBytes(); 
        } 
        return body; 
    } 
    
    // ------------------------------------------------ 
    // Overrides methods here 
    // ------------------------------------------------ 
    
    protected int onSetConnectTimeout() { 
        return DEFAULT_CNN_TIME_OUT; 
    } 
    
    protected String onCookie() { 
        return null; 
    } 
    
    protected String onSetBody() { 
        return null; 
    } 
    
    protected void onConnectorConnectTimout() { 
        Log.e(TAG, "Handling connector timeout gracefully."); 
    } 
    
    protected void onConnectorError(int _status) { 
        Log.e(TAG, "Handling connector error(responsed) gracefully: " + _status); 
    } 
    
    protected void onConnectorInvalidConnect(Exception _e) { 
        Log.e(TAG, "Handling connector invalid connect(crash) gracefully: " + _e.toString()); 
    } 
    
    /* 
    * Read data here. The function runs in thread. To hook on UI thread use onConnectorFinished() 
    */ 
    protected void onConnectorInputStream(InputStream _in) { 
    } 
    
    /* 
    * Last handler for a success connection 
    */ 
    protected void onConnectorFinished() { 
    } 
    } 
    
  2. Используйте Volley, чтобы получить ответ: https://github.com/ogrebgr/android_volley_examples/blob/master/src/com/github/volley_examples/Act_SimpleRequest.java

  3. Используйте jsoup, чтобы получить "сырой HTML": http://jsoup.org/

Смежные вопросы