آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

دریافت اطلاعات از یک سرور آنلاین

aliakbar333  11 سال پیش  11 سال پیش
+6 0

کد زیر برای

ارسال اطلاعات یک مکان به سرویس API  برای World weather online   

فراخواندن یک تجزیه کننده XML 

و بازگرداندن نتیجه تجزیه کننده به یک رشته 

قابل استفاده است .

دریافت اطلاعات هوا از  World weather online  

 package com.allmycode.services;

import java.net.URL;

import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;

import org.xml.sax.InputSource;
import org.xml.sax.XMLReader;

import android.app.Service;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.IBinder;
import android.os.Message;
import android.os.Messenger;
import android.os.RemoteException;
import android.widget.Toast;

public class MyWeatherService extends Service {

	Messenger messengerToClient = null;

	MyIncomingHandler myIncomingHandler = new MyIncomingHandler();
	Messenger messengerToService = new Messenger(myIncomingHandler);

	@Override
	public IBinder onBind(Intent intent) {
		doToast(R.string.service_bound);
		return messengerToService.getBinder();
	}

	class MyIncomingHandler extends Handler {
		@Override
		public void handleMessage(Message incomingMessage) {
			messengerToClient = incomingMessage.replyTo;

			Bundle reply = new Bundle();
			reply.putString("weather", getWeatherString(incomingMessage));
			Message replyMessage = Message.obtain();
			replyMessage.setData(reply);
			try {
				messengerToClient.send(replyMessage);
			} catch (RemoteException e) {
				e.printStackTrace();
			}
			doToast(R.string.message_handled);
		}
	}

	@Override
	public boolean onUnbind(Intent intent) {
		doToast(R.string.service_stopped_itself);
		stopSelf();
		return false;
	}

	@Override
	public void onDestroy() {
		myIncomingHandler = null;
		doToast(R.string.service_destroyed);
	}

	void doToast(int resource) {
		Toast.makeText(this, resource, Toast.LENGTH_SHORT).show();
	}

	String getWeatherString(Message message) {
		Bundle query = message.getData();
		String location = query.getString("location");		
		
		String weatherString;
		if (location != null && !location.equals("")) {
			Weather weather = getWeather(location);
			weatherString = Integer.toString(weather.getTemperature())
					+ (char) 0x00B0 + "F " + weather.getCondition();
		} else {
			weatherString = "It's dark at night.";
		}
		return weatherString;
	}

	private static final String GOOGLE_WEATHER_URL = "http://www.google.com/ig/api?weather=";

	public Weather getWeather(String location) {
		URL url;
		Weather weather = null;
		try {
			url = new URL(GOOGLE_WEATHER_URL + location.replace(" ", "%20"));
			SAXParser parser = SAXParserFactory.newInstance().newSAXParser();
			XMLReader reader = parser.getXMLReader();
			MySaxHandler saxHandler = new MySaxHandler();
			reader.setContentHandler(saxHandler);
			reader.parse(new InputSource(url.openStream()));

			weather = saxHandler.getWeather();

		} catch (Exception e) {
			e.printStackTrace();
		}
		return weather;
	}

}

 

 

 

 برای این سوال 2 پاسخ وجود دارد.
پاسخ به سوال 
aliakbar333  11 سال پیش
+1 0

لیست تجزیه XML

 

 package com.allmycode.services;

import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;

public class MySaxHandler extends DefaultHandler {

  private static final String CURRENT_CONDITIONS =
      "current_conditions";
  private static final String DATA = "data";
  private static final String CONDITION = "condition";
  private static final String TEMP_F = "temp_f";

  private Weather weather = new Weather();

  private boolean current_conditions = false;

  public Weather getWeather() {
    return weather;
  }

  @Override
  public void startElement(String namespaceURI,
      String localName, String qName,
      Attributes attributes) throws SAXException {

    if (localName.equals(CURRENT_CONDITIONS)) {
      current_conditions = true;
    } else {
      if (current_conditions) {
        if (localName.equals(TEMP_F)) {
          String dataAttribute =
              attributes.getValue(DATA);
          weather.setTemperature(Integer
              .parseInt(dataAttribute));
        } else if (localName.equals(CONDITION)) {
          String condAttribute =
              attributes.getValue(DATA);
          weather.setCondition(condAttribute);
        }
      }
    }
  }

  @Override
  public void endElement(String namespaceURI,
      String localName, String qName) throws SAXException {
    if (localName.equals(CURRENT_CONDITIONS)) {
      current_conditions = false;
    }
  }
}

 

 

پاسخ به سوال 
aliakbar333  11 سال پیش
+1 0

یک کلاس wheather

 package com.allmycode.services;

public class Weather {

  private int temperature = 0;
  private String condition = "";

  public Weather() {
  }

  public Integer getTemperature() {
    return temperature;
  }

  public void setTemperature(Integer temperature) {
    this.temperature = temperature;
  }

  public String getCondition() {
    return condition;
  }

  public void setCondition(String condition) {
    this.condition = condition;
  }

}

 

 

 


پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .