MTK6226 GPRS HTTP PUT Method 开发文档

MTK6226  GPRS  HTTP PUT  Method  开发文档

            Author:huazjxy   time:2007/04/27    company:huayu

 

1.       配置IIS 服务器支持 HTTP PUT方法。

具体操作如下:

 可以自己在windowsIIS组件里添加IIS信息服务,操作时须插入windows安装盘。

安装好IIS服务器之后,再安装Perl,用MTK6226软件自带就行。

 

设置IIS Put Method

   1IS信息服务,进入默认网站项,进入默认网站属性,将IP 地址,tcp端口设置如下:

 

2)再进入主目录,设置好本地路径,一般为c:/inetpub/wwwroot,再将后面的脚本资源访问、读取、记录访问、索引资源、写入、目录浏览等全部勾上。

将下面的执行权限选为脚本和执行文件,默认为纯脚本。

 

 

3)再进入执行权限后面的配置项:

如下图添加上perl脚本的相关配置:

 

 

perl脚本的动作限制为OPTIONS,GET,HEAD,POST,PUT,DELETE,TRACE.再将所有类型的脚本的动作限制全部改为与perl相同的。

 

如果是XP的后,安装IIS后再安装上perl后,perl脚本项自动就加上去了(注意:必须perl安装在后才行)。

 

如果是windows2003 server除了把上面的配置完成后,还必须在“应用WEB服务扩展“里面将禁止未知脚本项打开。

 

3)将IIS配置成可以匿名访问,如下:

 

 

4)配置成功后,重新启动下IIS网站服务,再用iisputscannner工具查看下,如果看到PUT方法已打开,则设置成功。如下图:

 

 

2.关于Http Put Method 程序实现:

一共修改了三个文件,FileMgr.cEngineerModeSocketDemoApp.cEngineerModeSrc.c

 

21、关于FileMgr.c的修改

先为gprs菜单写highlight函数如下:

一点击菜单,触发FMGR_ACTION_FWD_GPRS 动作。

void highlight_fmgr_to_gprs(void)

{

   fmgr_p->tree_action = FMGR_ACTION_FWD_GPRS;

  }

进入“传送请求处理“函数void fmgr_forward_to_appvoid.修改如下:

增加了对传送到gprs的响应。

   

void fmgr_forward_to_app(void)

{

   ……//此处省略

   switch (fmgr_p->tree_action)

       {

      

       case FMGR_ACTION_FWD_GPRS:

               /* pass file name to GPRS Server */

             /* hook gprs  func */

 phsetgprsForward(fmgr_p->file_path);

        

       ……//此处省略

}

……//此处省略

}

 

上面程序实现的功能是:当一按传送到GPRS键时,将文件的路径+文件名传递到函数

phsetgprsForward(fmgr_p->file_path),交给函数处理。

 

22关于EngineerModeSrc.c的修改

添加处理函数void  phsetgprsForward(S8 *path) ,对传递过来的文件名进行处理,并进入下

一步的EntryEmHTTPURL( )函数,让用户输入URL地址(服务器地址)。

 

这个函数的功能是:

先将当前的SocketAppType(套.接字申请类型)设置为HTTP_PUT方法。

再将文件名以unicode码的形式拷贝到soc_demo_gprs->filename(结构体里的数组里去),

记住此处不能够用指针,因为指向结构体的指针是分配在堆上的动态指针,可能会导致指针

地址所保存的数据部分丢失。

 

注意:必须用unicode码因为FS_Open()函数只认unicode码,否则将打不开文件。

 

void  phsetgprsForward(S8 *path)

{               

  currentSocketAppType =HTTP_PUT;//Put Method.

 

 if(soc_demo_gprs==NULL)

                 soc_demo_gprs=OslMalloc(sizeof(soc_demo_app_transaction_struct));

 

 /*copy the path to soc_demo_gprs->filename as unicode format*/

pfnUnicodeStrcpy((S8*)soc_demo_gprs->filename,path);

EntryEmHTTPURL();

}

 

接下来将里面原有的HTTP请求方法,改为HTTP_PUTHTTP_GET两种方法,在发送

Request请求时,增加对HTTP_PUT请求的处理:

void EmSocketSendReq(void)

{

……

/*add by huazjxy 07/04/27*/

if(currentSocketAppType == HTTP_PUT)

{ 

UnicodeToAnsii(emSocketInputdata, EmSocketInputBuff);//URL地址转换成Ansii.

}

 

else if(currentSocketAppType==HTTP_GET)

//

else if(currentSocketAppType==HTTP_PUT) 

//HTTP_PUT 请求以及文件名 soc_demo_gprs->filename 打入到 mmi_soc_demo_app_request() 函数中。

}

 void mmi_soc_demo_app_request(S8*path)函数主要增加了发送http_send_http_Put_request();

(将HTTP_PUT的协议头和数据发送给服务器的函数)。 

void mmi_soc_demo_app_request(S8*path){

……/* copy the path to soc_demo_transcation->filename as unicode format */                                  pfnUnicodeStrcpy((S8*)soc_demo_transaction->filename,path);

//将传递过来的文件路径以unicode format保存起来

switch(app_id){ 

case HTTP_PUT://HTTP_PUT add by huazjxy 07/04/27

 {    

 return en_soc_demo_http_send_Put_request();//add by huazjxy 07/04/27

}

case HTTP_GET://HTTP_GET add by huazjxy 07/04/27

{

return en_soc_demo_http_send_Get_request();//add by huazjxy 07/04/27

}

}……

}     

 

23 EngineerModeSocketDemoApp.c的修改

 

增加http_send_Put_request()函数,即向服务器发送http_put请求以及数据的函数,也是整个

程序设计的关键所在。

 Void en_soc_demo_http_send_Put_request(void){

……//此处省略

//打开文件,将文件读入data ,data1024 byte大小的buffer中。 

 /*open the file and get the size of the file */

fd = FS_Open((U16*)soc_demo_transaction->filename, FS_READ_ONLY );

FS_GetFileSize(fd,&file_size);

FS_Read(fd, data, FS_PUT_SIZE, (UINT*)&size );/*   the  end                    */ 

/*send http_put_request headers*///格式如下:头+数据 

……//soc_connect( )连接。

……//soc_send( )发送数据。

……//校验

if(ret==SOC_WOULDBLOCK){//waits for socket notifySetProtocolEventHandler(em_soc_demo_app_socket_notify,MSG_ID_APP_SOC_NOTIFY_IND);return EN_SOC_SUCCESS;} 

……}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值