请求数据的方法及客户端
技术领域
本发明涉及通信领域,特别涉及一种请求数据的方法及客户端。
背景技术
随着通信技术的不断发展,应用程序的种类越来越多。为了能提供更好的用户服务,终端上大多安装了各种应用程序的客户端,并且客户端中还可以嵌入访问网页的组件,该组件被称为内部网页组件,例如在应用程序客户端中嵌入浏览器,该浏览器即为内部网页组件。内部网页组件为了实现访问网页的功能,通常需要向网络侧的服务器请求数据。
内部网页组件在请求数据时,基于Ajax或JavaScript等方法可以直接与服务器进行通信,以向服务器发送数据请求,使得服务器在接收到数据请求后,向内部网页组件返回相对应的网页数据。
上述请求数据的方法至少存在以下问题:
由于内部网页组件基于Ajax或JavaScript等方法与服务器进行通信,因而从服务器获取到的数据仅为自身所属域的网页数据,致使其访问网页的范围具有一定的局限性,称为跨域限制;另外,由于内部网页组件直接与服务器进行通信,导致内部网页组件所在的应用程序客户端无法获知内部网页组件所请求的数据,也无法统计数据流量,由此造成安全问题和流量问题。
发明内容
本发明实施例提供了一种请求数据的方法及客户端,使得内部网页组件在访问网页时不存在跨域限制,也不存在安全问题和流量问题。所述技术方案如下:
一方面,提供了一种请求数据的方法,所述方法包括:
客户端获取嵌入自身的内部网页组件提交的请求协助的内容;
所述客户端根据所述请求协助的内容,向服务器请求对应数据;
所述客户端接收所述服务器返回的所述对应数据,并将所述对应数据交付给所述内部网页组件。
具体地,所述客户端获取嵌入自身的内部网页组件提交的请求协助的内容,包括:
所述客户端监听到嵌入自身的内部网页组件提交的协助请求,所述协助请求中携带所述客户端的标识、指示请求类型的标识和请求协助的内容。
具体地,所述向服务器请求对应数据,包括:
根据服务器的地理位置或反应速度,在多个可提供所述对应数据的服务器中选择一个服务器;
向选择出的服务器请求所述对应数据。
进一步地,所述向选择出的服务器请求对应数据之后,所述方法还包括:
如果在第一预设时间内未接收到所述选择出的服务器返回的所述对应数据,则在所述多个可提供对应数据的服务器中重新选择其他服务器,并向重新选择出的服务器请求所述对应数据。
进一步地,所述向服务器请求对应数据之后,所述方法还包括:
如果在第二预设时间内未接收到所述服务器返回的所述对应数据,则向所述服务器重复请求所述对应数据,直至接收到所述服务器返回的所述对应数据或重复发送的次数达到预设次数。
具体地,所述客户端将所述对应数据交付给所述内部网页组件,包括:
所述客户端向所述内部网页发送交付消息,所述交付消息中携带所述对应数据、所述内部网页组件的标识、所述客户端与所述内部网页组件的通信函数和预先约定的回传函数。
另一方面,提供了一种客户端,所述客户端包括:
获取模块,用于获取嵌入自身的内部网页组件提交的请求协助的内容;
发送模块,用于根据所述获取模块获取到的请求协助的内容,向服务器请求对应数据;
接收模块,用于接收所述服务器返回的所述对应数据;
交付模块,用于将所述接收模块接收到的所述对应数据交付给所述内部网页组件。
具体地,所述获取模块,具体用于监听嵌入自身的内部网页组件提交的协助请求,所述协助请求中携带所述客户端的标识、指示请求类型的标识和请求协助的内容。
具体地,所述发送模块,具体用于根据服务器的地理位置或反应速度,在多个可提供所述对应数据的服务器中选择一个服务器;向选择出的服务器请求所述对应数据。
进一步地,所述发送模块,还用于在第一预设时间内未接收到所述选择出的服务器返回的所述对应数据时,在所述多个可提供对应数据的服务器中重新选择其他服务器,并向重新选择出的服务器请求所述对应数据。
进一步地,所述发送模块,所述发送模块,还用于在第二预设时间内未接收到所述服务器返回的所述对应数据时,向所述服务器重复请求所述对应数据,直至接收到所述服务器返回的所述对应数据或重复发送的次数达到预设次数。
具体地,所述交付模块,具体用于向所述内部网页发送交付消息,所述交付消息中携带所述对应数据、所述内部网页组件的标识、所述客户端与所述内部网页组件的通信函数和预先约定的回传函数。
本发明实施例提供的技术方案带来的有益效果是:
由于客户端与服务器间的通信不存在域的限制,因而通过客户端根据自身嵌入的内部网页组件提交的请求协助的内容向服务器请求对应的数据,可实现内部网页组件请求跨域数据及访问跨域网页,降低了请求数据的局限;此外,客户端可以获知内部网页组件所请求的数据,并统计数据流量,从而通过安全限制和流量限制,解决因请求数据造成的安全问题和流量问题。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对本发明实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明实施例的一些举例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例一提供的一种请求数据的方法流程图;
图2是本发明实施例二提供的一种请求数据的方法流程图;
图3是本发明实施例三提供的一种客户端的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
实施例一
本发明实施例提供了一种请求数据的方法,参见图1,方法流程包括:
101:客户端获取嵌入自身的内部网页组件提交的请求协助的内容。
具体地,客户端获取嵌入自身的内部网页组件提交的请求协助的内容,包括但不限于:
客户端监听到嵌入自身的内部网页组件提交的协助请求,协助请求中携带客户端的标识、指示请求类型的标识和请求协助的内容。
102:客户端根据请求协助的内容,向服务器请求对应数据。
具体地,向服务器请求对应数据,包括但不限于:
根据服务器的地理位置或反应速度,在多个可提供对应数据的服务器中选择一个服务器;
向选择出的服务器请求对应数据。
进一步地,向选择出的服务器请求对应数据之后,方法还包括:
如果在第一预设时间内未接收到选择出的服务器返回的对应数据,则在多个可提供对应数据的服务器中重新选择其他服务器,并向重新选择出的服务器请求对应数据。
进一步地,向服务器请求对应数据之后,方法还包括:
如果在第二预设时间内未接收到服务器返回的对应数据,则向服务器重复请求对应数据,直至接收到服务器返回的对应数据或重复发送的次数达到预设次数。
103:客户端接收服务器返回的对应数据,并将对应数据交付给内部网页组件。
具体地,客户端将对应数据转发给内部网页组件,包括但不限于:
客户端向内部网页发送交付消息,交付消息中携带对应数据、内部网页组件的标识、客户端与内部网页组件的通信函数和预先约定的回传函数。
综上所述,本发明实施例提供的方法,由于客户端与服务器间的通信不存在域的限制,因而通过客户端根据自身嵌入的内部网页组件提交的请求协助的内容向服务器请求对应的数据,可实现内部网页组件请求跨域数据及访问跨域网页,降低了请求数据的局限;此外,客户端可以获知内部网页组件所请求的数据,并统计数据流量,从而通过安全限制和流量限制,解决因请求数据造成的安全问题和流量问题。
实施例二
为了使客户端内部网页组件能够实现跨域访问网页,并使客户端能够获知内部网页组件所请求的数据,从而解决因请求数据造成的安全问题和流量问题,本发明实施例提供了一种请求数据的方法,结合上述实施例一的内容,参见图2,本实施例提供的方法流程包括:
201:客户端获取嵌入自身的内部网页组件提交的请求协助的内容。
具体地,客户端获取嵌入自身的内部网页组件提交的请求协助的内容包括但不限于:客户端监听到嵌入自身的内部网页组件提交的协助请求,该协助请求中携带客户端的标识、指示请求类型的标识和请求协助的内容。其中,客户端的标识用于标识内部网页组件将协助请求发送给哪个客户端,指示请求类型的标识用于标识内部网页组件提交的请求的类型。客户端监听到内部网页组件提交的协助请求后,根据协助请求中携带的客户端的标识和指示请求类型的标识,即可确认该协助请求为发送给该客户端的协助请求,因而该客户端从该协助请求中获取其中携带的请求协助的内容。
举例来说,如果内部网页组件所属客户端为miliao客户端,当内部网页组件需要获取www.aaa.com这个网页链接的数据时,内部网页组件向miliao客户端发送如下协助请求:
miliao://help_to_get?url=www.aaa.com,其中miliao是客户端的标识,标识将该协助请求发送到的客户端为miliao客户端,help_to_get?是指示请求类型的标识,标识该请求的类型为协助请求,www.aaa.com为请求协助的内容。
miliao客户端监听到内部网页组件发送的协助请求后,根据该协助请求中携带的客户端的标识miliao和指示请求类型的标识help_to_get?确认该请求为自身的内部网页组件发送的协助请求,进而从协助请求中获取其中携带的请求协助的内容www.aaa.com。
此外,请求协助的内容除了可以为网址外,还可以为其他形式的内容。例如,如果内部网页组件需要获取一张图片的数据,则内部网页组件向miliao客户端发送的协助请求中携带的客户端的标识依然为miliao,指示请求类型的标识为help_to_get?,请求协助的内容可以为需要获取的图片标识;从而在客户端接收到该协助请求后,根据该协助请求中携带的客户端的标识miliao和指示请求类型的标识help_to_get?确认该请求为自身的内部网页组件发送的协助请求,进而从协助请求中获取其中携带的请求协助的内容为图片的标识,并通过后续步骤根据协助请求中携带的图片标识向服务器获取对应的图片数据。
除了上述方法之外,客户端还可以通过其他方法获取内部网页组件提交的请求协助的内容,例如,客户端可以获取到内部网页组件提交的携带请求协助的内容的其他信令等。对于客户端具体采用哪种方法获取内部网页组件提交的请求协助的内容,本发明实施例对此不做具体限定。
202:客户端根据请求协助的内容,向服务器请求对应数据。
其中,服务器为可提供请求协助的内容的对应数据的服务器,为了便于说明,本发明实施例及后续实施例中涉及的服务器均为可提供请求协助的内容的对应数据的服务器。
具体地,客户端根据请求协助的内容,向服务器请求对应数据的方式可以包括但不限于:客户端根据请求协助的内容,发送网络请求给服务器,向服务器请求对应数据,该网络请求中携带请求协助的内容。
除此之外,客户端还可以通过其他方法向服务器请求对应数据。例如,客户端还可以将请求协助的内容携带在其他信令中发送服务器等。对于客户端具体采用哪种方法向服务器请求对应数据,本发明实施例对此不做具体限定。
进一步地,如果有多个可提供对应数据的服务器,客户端可在服务器列表中选择出一个服务器,具体的,客户端向服务器请求对应数据的方式可以包括但不限于以下两种:
方式一:根据服务器的地理位置,在多个可提供对应数据的服务器中选择一个服务器;向选择出的服务器请求对应数据。
针对该种方式,根据服务器的地理位置,在多个可提供对应数据的服务器中选择一个服务器,可以是在多个可提供对应数据的服务器中选择与客户端的地理位置最近的服务器。
举例来说,miliao客户端在接收到内部网页组件发送的协助请求miliao://help_to_get?url=www.aaa.com后,根据提供的列表获知服务器1、服务器2和服务器3均可以提供请求协助的内容www.aaa.com对应的数据。如果服务器1与客户端的地理位置最近,则miliao客户端选择向服务器1请求www.aaa.com对应的数据。
方式二:根据服务器的反应速度,在多个可提供对应数据的服务器中选择一个服务器;向选择出的服务器请求对应数据。
针对该种方式,根据服务器的反应速度,在多个可提供对应数据的服务器中选择一个服务器,可以是在多个可提供对应数据的服务器中选择反应速度最快的服务器。其中,选择反应速度最快的服务器的具体方法可以为,客户端向多个可提供对应数据的服务器发送测试数据,根据每个服务器返回响应的情况,选择返回响应最快的服务器作为反应速度最快的服务器。
举例来说,miliao客户端在接收到内部网页组件发送的协助请求miliao://help_to_get?url=www.aaa.com后,根据提供的列表获知服务器1、服务器2和服务器3均可以提供该协助请求中请求协助的内容www.aaa.com对应的数据。miliao客户端通过向服务器1、服务器2和服务器3分别发送测试数据,根据每个服务器返回响应的情况,选择返回响应最快的服务器2作为反应速度最快的服务器,向服务器2请求协助的内容www.aaa.com对应的数据。
当然,除了上述两种方式之外,还可以有其他在多个可提供对应数据的服务器中选择一个服务器的方式。例如,客户端还可以在多个可提供对应数据的服务器中随机选择一个服务器;向选择出的服务器请求对应数据。对于客户端具体选用哪种方式在多个可提供对应数据的服务器中选择一个服务器,本发明实施例在此不做具体限定。
203:客户端接收服务器返回的对应数据,并将对应数据交付给内部网页组件。
具体地,将对应数据交付给内部网页组件的方式可以为客户端向内部网页发送交付消息,交付消息中携带对应数据、内部网页组件的标识、客户端与内部网页组件的通信函数和预先约定的回传函数。
举例来说,miliao客户端接收服务器返回的www.aaa.com的对应数据后,发送交付消息给内部网页组件,交付消息的具体格式是:webview.loadUrl(javascript:give back(content)),其中,webview为内部网页组件的标识,loadUrl()是miliao客户端与内部网页组件的通信函数,(javascript:give_back(content))是通信函数loadUrl的具体参数,是指将miliao客户端将对应数据content通过内部网页组件可识别的javascript的格式返回给内部网页组件,其中,give_back()是miliao客户端与内部网页组件预先约定的回传函数。此外,如果客户端接收到服务器在获取到图片标识这个请求协助的内容后返回的图片链接后,发送交付消息给内部网页组件,交付消息中携带图片链接。此时,内部网页组件获得图片链接后,还需要将图片链接作为请求协助的内容,继续执行本发明实施例的步骤201至203,具体方式与前述步骤相同,在此不再赘述,内部网页组件由此可以实现获取到图片数据。
除此之外,客户端还可以通过其他方式将获取到的对应数据交付给内部网页组件,例如将对应数据携带在其他信令中,交付给内部网页组件等。对于客户端具体采用哪种方式将对应数据交付给内部网页组件,本发明实施例在此不进行具体限定。
进一步地,对于客户端未接收到选择出的服务器返回的对应数据的情况,本实施例提供的方法还支持客户端重复请求对应数据的步骤。客户端重复请求对应数据的方式可以包括但不限于以下两种:
方式一:如果在第一预设时间内未接收到选择出的服务器返回的对应数据,则在多个可提供对应数据的服务器中重新选择其他服务器,并向重新选择出的服务器请求对应数据。
其中,第一预设时间可以是2秒或3秒等,本发明实施例在此不对第一预设时间的大小进行具体限定。在多个可提供对应数据的服务器中重新选择其他服务器的具体方式与上述相同,在此不再赘述。
针对该方式,由于涉及重新选择的过程,因而该种方式仅适用于存在多个可提供对应数据的服务器的情况。且如果多个可提供对应数据的服务器都被选择并且都没有返回对应数据,则客户端可以选择向内部网页组件发送协助请求失败的响应,流程结束;或者,客户端还可以继续重复在多个可提供对应数据的服务器中重新选择服务器,并向重新选择出的服务器请求对应数据,直到接收到重新选择出的服务器返回的对应数据后,继续执行步骤203。
举例来说,miliao客户端在向服务器1请求www.aaa.com对应的数据后,在第一预设时间内未接收到服务器1返回的对应数据,则在可提供对应数据的服务器1、服务器2和服务器3中重新选择服务器2,向服务器2请求www.aaa.com对应的数据。
方式二:如果在第二预设时间内未接收到服务器返回的对应数据,则向可提供对应数据的服务器重复请求对应数据,直至接收到服务器返回的对应数据或重复发送的次数达到预设次数为止。
其中,第二预设时长可以是1秒或者2秒,预设次数可以为5次或10次,本发明实施例在此不对第二预设时间或者预设次数进行具体限定。
针对该方式,既适用于存在多个可提供对应数据的服务器的情况,也适用于存在一个可提供对应数据的服务器的情况。如果在重复发送的次数达到预设次数之后,客户端依然没有接收到可提供对应数据的服务器返回的对应数据,则客户端可以选择向内部网页组件发送协助请求失败的响应,流程结束。
举例来说,miliao客户端向服务器1请求www.aaa.com对应的数据后,在第二预设时间内未接收到服务器1返回的对应数据,则向服务器1重复请求www.aaa.com对应的数据,直至接收到服务器1返回的对应数据或重复发送的次数达到预设次数为止。
除上述两种客户端向服务器重复请求对应数据的方式外,还可以有其他方式,对于客户端每次具体采用哪种方式重新请求对应数据,本发明实施例在此不进行限定。
另外,客户端将对应数据交付给内部网页组件,内部网页组件获取到对应数据之后,内部网页组件就可以执行将获取到的对应数据显示在客户端界面上等操作。对于内部网页组件获取到对应数据之后的进一步操作,本发明实施例在此不进行具体限定。
综上所述,本发明实施例提供的方法,由于客户端与服务器间的通信不存在域的限制,因而通过客户端根据自身嵌入的内部网页组件提交的请求协助的内容向服务器请求对应的数据,可实现内部网页组件请求跨域数据及访问跨域网页,降低了请求数据的局限;此外,客户端可以获知内部网页组件所请求的数据,并统计数据流量,从而通过安全限制和流量限制,解决因请求数据造成的安全问题和流量问题。
实施例三
本发明实施例提供了一种客户端,该客户端用于执行上述实施例一或实施例二提供的请求数据的方法。
参见图3,该客户端包括:
获取模块301,用于获取嵌入自身的内部网页组件提交的请求协助的内容;
发送模块302,用于根据获取模块301获取到的请求协助的内容,向服务器请求对应数据;
接收模块303,用于接收服务器返回的对应数据;
交付模块304,用于将接收模块303接收到的对应数据交付给内部网页组件。
具体地,获取模块301,具体用于监听嵌入自身的内部网页组件提交的协助请求,协助请求中携带客户端的标识、指示请求类型的标识和请求协助的内容。
具体地,发送模块302,具体用于根据服务器的地理位置或反应速度,在多个可提供对应数据的服务器中选择一个服务器;向选择出的服务器请求对应数据。
进一步地,发送模块302,还用于在第一预设时间内未接收到选择出的服务器返回的对应数据时,在多个可提供对应数据的服务器中重新选择其他服务器,并向重新选择出的服务器请求对应数据。
进一步地,发送模块302,还用于在第二预设时间内未接收到服务器返回的对应数据时,向服务器重复请求对应数据,直至接收到服务器返回的对应数据或重复发送的次数达到预设次数。
具体地,交付模块304,具体用于向内部网页发送交付消息,交付消息中携带对应数据、内部网页组件的标识、客户端与内部网页组件的通信函数和预先约定的回传函数。
综上所述,本发明实施例提供的客户端,由于在与服务器间的通信不存在域的限制,因而通过客户端根据自身嵌入的内部网页组件提交的请求协助的内容向服务器请求对应的数据,可实现内部网页组件请求跨域数据及访问跨域网页,降低了请求数据的局限;此外,客户端可以获知内部网页组件所请求的数据,并统计数据流量,从而通过安全限制和流量限制,解决因请求数据造成的安全问题和流量问题。
需要说明的是:上述实施例提供的客户端在请求数据时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将客户端的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的客户端与请求数据的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为较佳实施例,并不用以限制本发明实施例,凡在本发明实施例的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明实施例的保护范围之内。