...
private const string localApi = "http://localhost/ch9/api.php";    
...
private IEnumerator CallAPI(string url, Hashtable args, Action<string> 
callback) {                        
   WWW www;
   if (args == null) {
      www = new WWW(url);
   } else {
      WWWForm form = new WWWForm();    
      foreach(DictionaryEntry arg in args) {
         form.AddField(arg.Key.ToString(), arg.Value.ToString());
      }
      www = new WWW(url, form);   
   }
   yield return www;
   ...
}

public IEnumerator GetWeatherXML(Action<string> callback) {
   return CallAPI(xmlApi, null, callback);       
}

public IEnumerator GetWeatherJSON(Action<string> callback) {
   return CallAPI(jsonApi, null, callback);
}

public IEnumerator LogWeather(string name, float cloudValue, Action<string> 
callback) {
   Hashtable args = new Hashtable(); 
   args.Add("message", name);
   args.Add("cloud_value", cloudValue);
   args.Add("timestamp", DateTime.UtcNow.Ticks);  
  
   return CallAPI(localApi, args, callback);
}
...
