当前位置:  编程技术>移动开发
本页文章导读:
    ▪objective c施用http访问服务器        objective c使用http访问服务器 通过http 方式向服务器发送消息,同时从服务器端得到json 串,但是现在遇到了问题,当我通过了登陆页面之后,再次向服务器端发起请求,结果服务器端显示.........
    ▪ 审慎使用ASIHttpRequest的block特性        谨慎使用ASIHttpRequest的block特性 谨慎使用ASIHttpRequest的block特性     使用ASIHttpRequest的setCompletionBlock、setFailedBlock时碰到一些诡异的内存泄漏和莫名其妙的行为(如:无法release对象)。经过.........
    ▪ 搜寻框的实现       搜索框的实现 SearchManager具体使用步骤如下:(1)配置search bar的相关信息,新建一个位于res/xml下的一个searchable.xml的配置文件,如默认值、是否有搜索建议或者语音搜索。   view source print?.........

[1]objective c施用http访问服务器
    来源: 互联网  发布时间: 2014-02-18
objective c使用http访问服务器
通过http 方式向服务器发送消息,同时从服务器端得到json 串,但是现在遇到了问题,当我通过了登陆页面之后,再次向服务器端发起请求,结果服务器端显示我未登陆,不知道该用什么方法来保持于服务器端的登陆状态。

>> 第一次登录后 取得一个jsessionid  以后要是这个id 还有效  就带上它[" set-cookie" 这个字段就是你这个jsessionid值 ]

一段使用cookies的代码:
- (NSURLRequest *)HttpPost:(NSString *)url {
   
    NSArray *cookies = [[NSHTTPCookieStorage sharedHTTPCookieStorage]cookies];
   
    NSHTTPCookie *Cookie = nil;
    for(NSHTTPCookie *_cookie in cookies) {
        if([[_cookie domain]isEqualToString:YOURDomain]) {
            _iCookie = _cookie;
            break;
        }
    }
   
    NSMutableURLRequest *_request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:url]];
    [_request setHTTPMethod:@"POST"];
    [_request setTimeoutInterval:10];
    [_request setCachePolicy:NSURLRequestUseProtocolCachePolicy];
    [_request setHTTPShouldHandleCookies:YES];
    [_request setValue:[NSString stringWithFormat:@"%@=%@", [_Cookie name], [_Cookie value]] forHTTPHeaderField:@"Cookie"];
   
    return _request;
}

    
[2] 审慎使用ASIHttpRequest的block特性
    来源: 互联网  发布时间: 2014-02-18
谨慎使用ASIHttpRequest的block特性
谨慎使用ASIHttpRequest的block特性  

  使用ASIHttpRequest的setCompletionBlock、setFailedBlock时碰到一些诡异的内存泄漏和莫名其妙的行为(如:无法release对象)。经过与同事的讨论、查找资料终于得以解决,全是对block理解不透彻惹的祸。

1. 声明ASIHttpRequest时一定要使用__block关键字
  __block关键字告诉block不要retain request,这对于防止循环retain非常重要!!因为request总是会retain block
2. 谨慎处理block与对象的关系
  当setCompletionBlock/setFailedBlock内部使用对象的instance var时,self会被retain(If you access an instance variable by reference, self is retained;)。所以在request结束前向对象发送release消息不会导致对象的释放(dealloc),亦即:该对象依然可进行所有操作,这将导致诸多你意想不到的结果。
3. 解决第2点的问题
  3.1 仔细拿捏block与对象的关系 + 按值的方式访问instance var(If you access an instance variable by value, the variable is retained.)
  3.2 不使用block,而使用ASIHttpRequestDelegate
4. 参考资料
  4.1 http://allseeing-i.com/ASIHTTPRequest/How-to-use - Using blocks
  4.2 Blocks Programming Topics - Object and Block Variables

原文:
http://www.cocoachina.com/bbs/read.php?tid=95100

    
[3] 搜寻框的实现
    来源: 互联网  发布时间: 2014-02-18
搜索框的实现

SearchManager具体使用步骤如下:
(1)配置search bar的相关信息,新建一个位于res/xml下的一个searchable.xml的配置文件,如默认值、是否有搜索建议或者语音搜索。

 

view source print?
01 <searchable xmlns:android=http://schemas.android.com/apk/res/android
02  
03   <!-- label为搜索框上方的文本,hint搜索框里面的提示文本,显示label -->
04     android:label="@string/search_label"
05     android:hint="@string/search_hint"
06     android:searchMode="showSearchLabelAsBadge"
07  
08   <!-- 语音搜索配置 -->
09     android:voiceSearchMode="showVoiceSearchButton|launchRecognizer"
10     android:voiceLanguageModel="free_form"
11     android:voicePromptText="@string/search_invoke"
12  
13   
14     <!-- 配置搜索建议,配置错误将不会显示,这里的searchSuggestAuthority的值必须是
15     继承自SearchRecentSuggestionsProvider的完整路径名 -->
16  
17    android:searchSuggestAuthority="com.android.cbin.SearchSuggestionSampleProvider"
18     android:searchSuggestSelection=" ? "
19 />

  manifest.xml配置,搜索结果处理的Activity将出现两种情况,一种是从其他Activity中的search bar打开一个Activtiy专门处理搜索结果,第二种是就在当前Activity就是处理结果的Activity,先介绍第一种配置:

view source print?
01 <activity android:name="SearchResultActivity">
02 <intent-filter>
03 <action android:name="android.intent.action.SEARCH"></action>
04 </intent-filter>
05  
06      
07      <!-- 指定上面的searchable.xml文件 -->
08  
09    <meta-data android:resource="@xml/searchable"
10  
11          android:name="android.app.searchable"></meta-data>
12  
13 </activity>
14 <!-- 为了使每一个Activity都能使用search bar,一定要将这个标签放到启动Activity中,里面的value指定 的是前面的搜索结果Activity-->
15 <meta-data android:name="android.app.default_searchable"
16                        android:value=".SearchResultActivity"
17 />

搜索建议在manifest.xml中相关的配置  

view source print?
1 <!--之前searchable.xml中有一个searchSuggestAuthority的值其实和这里的
2 authorities指向的都是name中所关联的SearchSuggestionSampleProvider,他是一个
3 SearchRecentSuggestionsProvider的子类-->
4  
5 <provider android:name="SearchSuggestionSampleProvider"
6  
7 android:authorities="com.android.cbin.SearchSuggestionSampleProvider"></provider>

为了能够使用search bar 我们必须重写Activity的onSearchRequested的方法,在界面上启动一个search bar 但是这个动作不会自动触发,必须通过一个按钮或者菜单的点击事件触发;  

view source print?
01 @Override
02     public boolean onSearchRequested(){
03          
04         String text=etdata.getText().toString();
05         Bundle bundle=new Bundle();
06         bundle.putString("data", text);
07          
08         //打开浮动搜索框(第一个参数默认添加到搜索框的值)
09         //bundle为传递的数据
10         startSearch("mm", false, bundle, false);
11         //这个地方一定要返回真 如果只是super.onSearchRequested方法不但
12      //onSearchRequested(搜索框默认值)无法添加到搜索框中,bundle也无法传递出去
13  
14 return
15 true;
16     }

接收query和bundle、保存query值(即搜索建议的列表值)  

view source print?
01 public void doSearchQuery(){
02         final Intent intent = getIntent();
03         //获得搜索框里值
04         String query=intent.getStringExtra(SearchManager.QUERY);
05         tvquery.setText(query);
06         //保存搜索记录
07         SearchRecentSuggestions suggestions=new SearchRecentSuggestions(this,
08                 SearchSuggestionSampleProvider.AUTHORITY, SearchSuggestionSampleProvider.MODE);
09         suggestions.saveRecentQuery(query, null);
10         if(Intent.ACTION_SEARCH.equals(intent.getAction())){
11             //获取传递的数据
12             Bundle bundled=intent.getBundleExtra(SearchManager.APP_DATA);
13             if(bundled!=null){
14                 String ttdata=bundled.getString("data");
15                 tvdata.setText(ttdata);
16  
17             }else{
18                 tvdata.setText("no data");
19             }
20         }
21     }

之前说到了处理结果的Activity将可能出现的两种情况的两种,现在就处理第二种状况,就是假如invoke search bar的Activity同时也是处理搜索结果的Activity,如果按照之前的方式处理则会出现一种情况,搜索一次就实例化一次Activity,当按返回键的时候会发现老是同一个Activity,其实为了使它只有一个实例化对象,只需简单的配置和代码就能实现 第一:在处理搜索结果Activity的manifest.xml中添加android:launchMode="singleTop"属性 第二:重写Activity的onNewIntent(Intent intent)

view source print?
01 @Override
02     public void onNewIntent(Intent intent){
03         super.onNewIntent(intent);
04         //获得搜索框里值
05         String query=intent.getStringExtra(SearchManager.QUERY);
06         tvquery.setText(query);
07         //保存搜索记录
08         SearchRecentSuggestions suggestions=new SearchRecentSuggestions(this,
09                 SearchSuggestionSampleProvider.AUTHORITY, SearchSuggestionSampleProvider.MODE);
10         suggestions.saveRecentQuery(query, null);
11         if(Intent.ACTION_SEARCH.equals(intent.getAction())){
12             //获取传递的数据
13             Bundle bundled=intent.getBundleExtra(SearchManager.APP_DATA);
14             if(bundled!=null){
15                 String ttdata=bundled.getString("data");
16                 tvdata.setText(ttdata);
17  
18             }else{
19                 tvdata.setText("no data");
20             }
21         }
22     }

  相关知识:上面讲到了将最近的搜索值添加到搜索建议中,但却没有提到如果清理搜索建议中的值,与保存相似,SearchRecentSuggestion对象提供了一个clearHistory()方法  

view source print?
1 private void clearSearchHistory() {
2         SearchRecentSuggestions suggestions =
3 new SearchRecentSuggestions(this,
4                 SearchSuggestionSampleProvider.AUTHORITY, SearchSuggestionSampleProvider.MODE);
5         suggestions.clearHistory();
6     }

    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3