2011-02-05 43 views
6

Đã giải quyết: Thiếu thông số chế độ xem cho postData(), được thay đổi để phản ánh điều này.Android: Gửi dữ liệu được lưu trữ trong MySQL

Tôi muốn được trợ giúp gửi dữ liệu GPS đến máy chủ sẽ được lưu trữ trong cơ sở dữ liệu MySQL bằng PHP.

Đây là bên trong tập tin Java của tôi:

ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2); 

public void postData(View v) 
{ 
    nameValuePairs.add(new BasicNameValuePair("Lat","19.80")); 
    nameValuePairs.add(new BasicNameValuePair("Lon","13.22")); 

    //http post 
    try{ 
     HttpClient httpclient = new DefaultHttpClient(); 
     HttpPost httppost = new  
     HttpPost("http://www.xxxxxxxx.com/test.php"); 
     httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 
     HttpResponse response = httpclient.execute(httppost); 
     HttpEntity entity = response.getEntity(); 
     InputStream is = entity.getContent(); 
     Log.i("postData", response.getStatusLine().toString()); 
    } 

    catch(Exception e) 
    { 
     Log.e("log_tag", "Error in http connection "+e.toString()); 
    }   
} 

Và PHP của tôi:

<?php 
include 'connect.php'; //Connect 

//retrieve the data 
$lat = $_POST['lat']; 
$lon = $_POST['lon']; 

$sql = "INSERT INTO Coords (Lat, Lon) VALUES('$lat', '$lon')"; 

if (!mysql_query($sql, $sqlCon)) 
{ 
    die('Error: ' . mysql_error()); 
} 
else 
{ 
    //echo "1 record added"; 
} 

include 'closeConnection.php'; 
?> 

StackTrace: Dự án - Heat [Android Ứng dụng]

02-06 00:37:14.265: ERROR/AndroidRuntime(1607): FATAL EXCEPTION: main 
02-06 00:37:14.265: ERROR/AndroidRuntime(1607): java.lang.IllegalStateException: Could  
not find a method **postData(View)** in the activity class com.nathanhunston.heat.Main for 
onClick handler on view class android.widget.Button with id 'dropLocBtn' 
+0

Bạn nên kiểm tra đầu ra logcat của mình và đăng stacktrace tại đây. –

+0

@ dave.c Đăng theo dõi, từ những gì tôi có thể thấy ngay lập tức tôi có một exceptionStateException, do đó, một cái gì đó để làm với máy ảo không được ở trạng thái chính xác .... – nhunston

+0

Tôi không nghĩ đó là đầu ra logcat log của bạn . Bạn có thể sử dụng chế độ xem trong nhật thực hoặc công cụ độc lập để nhận kết quả. Hãy xem [liên kết này] (http://developer.android.com/guide/developing/debug-tasks.html) để biết chi tiết. –

Trả lời

5

dòng đầu tiên của stack trace của bạn sẽ cho bạn biết chính xác những gì bạn đang làm sai:

02-06 00:37:14.265: ERROR/AndroidRuntime(1607): FATAL EXCEPTION: main 
02-06 00:37:14.265: ERROR/AndroidRuntime(1607): java.lang.IllegalStateException: Could not find a method postData(View) in the activity class com.nathanhunston.heat.Main for onClick handler on view class android.widget.Button with id 'dropLocBtn' 

Đó là bởi vì bạn không có một 012.393.656 Tham sốtrong tuyên bố phương thức postData() của bạn.

+0

Vâng tôi chỉ nhận thấy nó khi tôi đọc nó = D quy tắc logcat. – nhunston

+2

@Herly: Vâng, đôi khi tôi muốn có một giao diện thần kinh trực tiếp từ LogCat thẳng đến não của tôi. OTOH, LogCat khá là trò chuyện, và những giọng nói khác trong đầu tôi sẽ ghen tị. – CommonsWare

+0

Và chúng tôi sẽ muốn điều đó ngay bây giờ. – nhunston

0

Bạn đã thêm <uses-permission android:name="android.permission.INTERNET"></uses-permission> vào tệp manifest.xml?

+0

Vâng, tôi đang cố gắng gửi GPS coords đến một cơ sở dữ liệu được lưu trữ, tôi có thể truy cập vào vị trí, tôi chỉ có một nhức đầu thực gửi bất kỳ hình thức dữ liệu đến máy chủ. – nhunston

+0

Có gì ... bạn có dòng đó trong tệp kê khai của mình không? Kiểm tra Logcat để biết stacktrace trong phối cảnh Debug và đăng nó lên. – techiServices

+0

Xin lỗi tôi không rõ ràng, có tôi có dòng trong tệp kê khai của tôi. – nhunston

0

Tôi nghĩ bạn nên gọi nó là trong một thread ... nếu máy chủ bị treo một chút để trả lời, bạn sẽ có được Force gần thông điệp ...

Bạn có thể nhìn vào bài đăng này: Problem with Android HTTP POST

+0

Cảm ơn tôi sẽ có một đọc về điều đó ngay bây giờ. – nhunston

0

tôi nghĩ rằng vấn đề là ở dòng "nameValuePairs.add (mới BasicNameValuePair (" Lạt " "19.80"));" bạn đã sử dụng Lạt và phù hợp $ _POST [ 'lat'] ;, bạn đã sử dụng lat. Vì vậy, Lat và lat là điều khác nhau. Nhân đây, đây là bài viết hay, http://androidtheme.wordpress.com/2011/02/20/connect-android-device-to-mysql/. Nó thực sự hoạt động, tôi hy vọng bạn thích nó.

Các vấn đề liên quan