我有一种非常方便的方法可以从我的 Android 应用程序中的 Web 服务器获取数据,并且希望能够为 iOS 复制该方法。
在 Android 中,我有一个从其他类调用的异步类,它在完成加载后从服务器返回数据。
这就是该类的样子:
公共类 GetData 扩展 AsyncTask、String、Void> {
public Context context;
InputStream is = null;
StringBuilder sb = null;
public GetData (Context context) {
this.context = context;
}
@Override
/**
* Send the values in params to the server
*/
protected Void doInBackground(ArrayList<NameValuePair>... params) {
String server = "mywebpage";
HttpPost httppost=new HttpPost(server);
HttpClient httpclient=new DefaultHttpClient();
try {
httppost.setEntity(new UrlEncodedFormEntity(params[0]));
HttpResponse rs=httpclient.execute(httppost);
HttpEntity entity = rs.getEntity();
is = entity.getContent();
try{
BufferedReader reader = new BufferedReader(new InputStreamReader(is,"UTF-8"),8);
sb = new StringBuilder();
sb.append(reader.readLine());
String line = "0";
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
}
catch(Exception e) {
Log.e("log_tag", "Error converting result "+e.toString());
}
is.close();
publishProgress(sb.toString());
}catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
}catch (IOException e) {
e.printStackTrace();
}
return null;
}
}
如果我想使用 GetData 类,我会像这样创建它的一个新实例:
新的 GetData(this.getActivity()) {
@Override
protected void onProgressUpdate(String... string) {
result = string[0]);
}
}.execute(data);
我已经能够从 iOS 中的每个 viewController 中获取和发送数据,但我无法获得与此类似的方法来工作。
我一直在尝试创建一个类,但我不确定如何使用某些参数调用它以及我应该将 GetData 设为哪个子类。
在Objective C中有什么好的方法吗?