code: public static Response call(String server, String service, boolean suppress, DataObject data, String... params) {
          List<String> list = new ArrayList<String>(Arrays.asList(params));
          for (Field field: data.getClass().getFields()) {
              if (Modifier.isStatic(field.getModifiers())) continue;
              field.setAccessible(true);
              try {
                  Object value = field.get(data);
                  if (value == null) value = "";
                  if (_urlencoding) {
                      try {
                          list.add(field.getName() + '=' + URLEncoder.encode(value.toString(), "UTF-8"));
                      } catch (UnsupportedEncodingException x) {
                          _logger.log(Level.WARNING, value.toString(), x);
                      }
                  } else {
                      list.add(field.getName() + '=' + value);
                  }
              } catch (IllegalAccessException x) {}
          }
          return call(server, service, suppress, list.toArray(new String[list.size()]));
      }
docs: Calls a remote service with non-static member values in the given DataObject as arguments.