2012-05-17 27 views
11

Tôi đang sử dụng mã này để có được địa chỉ địa lý:io java IOException không thể phân tích phản hồi từ máy chủ geocoder

private String getAddress(Location location) 
{ 
    try{ 
     List<Address> addresses = new Geocoder(this,Locale.getDefault()).getFromLocation(location.getLatitude(), location.getLongitude(), 1); 
     if(addresses!=null) 
     { 
      String address="Address not available"; 

      for(int i=0;i<addresses.size();i++) 
      { 

       Address addre=addresses.get(i); 

       String street=addre.getAddressLine(0); 
       if(null==street) 
        street=""; 

       String city=addre.getLocality(); 
       if(city==null) city=""; 

       String state=addre.getAdminArea(); 
       if(state==null) state=""; 


       String country=addre.getCountryName(); 
       if(country==null) country=""; 

       address=street+", "+city+", "+state+", "+country; 

      } 
      return address; 
     } 

    } 
    catch (Exception e) { 
     return "Address not available"; 
    } 
    return "Address not available"; 
} 

Trước đó tôi đã nhận được một danh sách địa chỉ trả lại, nhưng bây giờ tôi nhận được, mọi thời gian, ngoại lệ này:

java.io.IOException unable to parse response from server 

Xin vui lòng trợ giúp.

+0

... Vì vậy, có hai possibilites: 1: Trạng thái mạng đã thay đổi và bạn không nhận được phản hồi từ máy chủ. Hoặc, 2: Bạn đã thay đổi thứ gì đó đã phá vỡ mã của bạn. Tại sao bạn không quay trở lại và chắc chắn rằng bạn không thay đổi bất cứ điều gì từ thời gian nó làm việc cho đến bây giờ. Nếu tất cả là tốt, hãy chắc chắn rằng bạn thực sự có thể tiếp cận với máy chủ trên mạng mặc dù các phương tiện khác. Nếu bạn vẫn gặp sự cố, hãy hiển thị cho chúng tôi mã của bạn và Logcat (= – dcow

+0

Mã trước đó và hiện tại là 100% giống như –

+0

Bạn đã làm những việc khác mà tôi đã đề xuất chưa? – dcow

Trả lời

6

Cuối cùng tôi đã nhận được giải pháp cho vấn đề của mình.

Nếu bạn cố gắng để đạt máy chủ rất thường xuyên (nhiều lần trong một phút) để nhận địa chỉ từ lat, dài sau đó bạn có thể nhận được các giải pháp này exception.The của vấn đề này có thể là:

1-Vui lòng thử để tránh một số lần truy cập cho địa chỉ trong một phút.
2-Chạy mã này trên thiết bị khác.

Nếu bạn muốn chạy mã này trên cùng thiết bị, hãy xóa dữ liệu ứng dụng của bạn (hoặc gỡ cài đặt ứng dụng của bạn) và chờ một thời gian.

+0

Tôi đã thử nghiệm điều này trong hai thiết bị motorola và samsung. Đối với Motorola tôi có thể nhận được dữ liệu nhưng đối với thiết bị samsung vẫn còn tôi không thể sửa chữa nó. Bạn có cách nào khác để sửa lỗi này không. – John

+0

@Atul Bhardwaj: Tôi cũng đang đối mặt với cùng một vấn đề, vẫn đang cố gắng giải quyết nhưng không có may mắn. –

+0

Như John đã đề cập, nó hoạt động tốt trên một số thiết bị không phải trên vài thiết bị. Sau khi đôi khi/khởi động lại của thiết bị làm cho cùng một chức năng để làm việc trên các thiết bị mà không được trước. Rất lạ !. Có ai có cách nào để sửa lỗi này không? –

2

Tôi gặp vấn đề tương tự với Samsung Galaxy Tab 10.1. Tôi tìm kiếm giờ cho một giải pháp và không có gì giúp đỡ. Để khắc phục vấn đề thử sau:

Đến Cài đặt vị trí và kích hoạt:

1.Use mạng không dây vệ tinh GPS 2.Sử dụng

chờ đợi cho vị trí GPS sửa chữa

Sau này, geocoder máy chủ đã trả lời. Ngay cả khi tôi vô hiệu hóa vị trí không dây và GPS, máy chủ vẫn hoạt động. Tôi nghĩ rằng trình mã hóa địa lý chỉ có thể được sử dụng nếu bạn chia sẻ vị trí của mình với Google.

0

Giải pháp của tôi là:

Settings > Date & Time > Automatic date & time (Use network-provided time) 
0

nguyên nhân của tôi về vấn đề này đã không có sự cho phép thích hợp cho các geocoder

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
0

tôi đã nhận được cùng một vấn đề. tôi thêm sự cho phép này

android.permission.WRITE_EXTERNAL_STORAGE

và nó làm việc tốt.

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