将微博或者qq空间的说说同步至博客园 wcf+js(ajax)跨域请求(1)

前天刚写了篇文章使用Bootstrap为你的博客园自定义轮播图片(今天将图片加载的顺序调整了下,不在访问的时候直接加载,而是页面加载最后在脚本里面动态添加dom元素),虽说技术含量不怎么高,但是大家还算感兴趣。其实对博主来说最关键是博客的积分在涨。所以趁热打铁,再来一篇使用wcf+js ajax跨域请求数据同步空间说说的帖子。

因为是请求qq说说的数据,所以要登陆我的qq,这个很麻烦,总不能让每个访客都登陆的qq,然后把数据取出来吧,而且qq也没有相关的接口提供,登陆的时候还要处理验证码。所以这种思路立马被否定了。最后突然想到了wcf,让大家直接来我的机器上取数据就安全多了。所以最终决定, 在我本机上部署wcf服务,在博客园使用js来跨域请求数据。至于qq数据就好说了。打算使用chrome插件当我登陆qq的时候讲数据存储下来,然后大家来我这访问数据的时候可以直接去取保存好的数据,数据可以保存到数据库,也可以保存在txt文件里。chrome插件取数据好取,但因为js不能直接操作文件夹,所以这个问题还没想好,不过html5现在也应该有相应的解决方案,这个问题暂且不提。

配置wcf服务

项目结构如下

AjaxService.cs类

using System;
using System.Collections.Generic;
using System.Linq;
using System.ServiceModel;
using System.ServiceModel.Activation;
using System.ServiceModel.Web;
using System.Text;
using System.Threading.Tasks;

namespace IISServices
{
    [ServiceContract(Namespace = "")]
    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
    [JavascriptCallbackBehavior(UrlParameterName = "JsonCallBack")]
    public class AjaxService
    {
        [OperationContract]
        [WebGet(RequestFormat = WebMessageFormat.Json)]
        public string Test(string value)
        {
            return "wcfservice:" + value;
        }
    }
}

AjaxService.svc

 <%@ServiceHost Service="IISServices.AjaxService"%> 

Web.Config

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.web>
    <compilation debug="true" targetFramework="4.0" />
    <!--添加:authentication,并设置为Forms-->
    <authentication mode="Forms"/>
  </system.web>
  <system.serviceModel>
    <behaviors>
      <endpointBehaviors>
        <behavior name="Wcf.demo.AjaxServiceAspNetAjaxBehavior">
          <enableWebScript />
        </behavior>
      </endpointBehaviors>
      <!--添加serviceBehaviors-->
      <serviceBehaviors>
        <behavior name="EnableMetadataBehaviors">
          <serviceMetadata httpGetEnabled="true"/>
          <serviceDebug includeExceptionDetailInFaults="true"/>
        </behavior>
      </serviceBehaviors>
      <!--添加serviceBehaviors:结束-->
    </behaviors>
    <!--添加bindings-->
    <bindings>
      <webHttpBinding>
        <binding name="test" crossDomainScriptAccessEnabled="true"></binding>
      </webHttpBinding>
    </bindings>
    <!--添加bindings:结束-->

    <serviceHostingEnvironment aspNetCompatibilityEnabled="true"
        multipleSiteBindingsEnabled="true" />
    <services>
      <!--为service添加:behaviorConfiguration:元数据-->
      <service name="IISServices.AjaxService" behaviorConfiguration="EnableMetadataBehaviors">
        <!--为endpoint添加:bindingConfiguration跨域-->
        <endpoint address="" behaviorConfiguration="Wcf.demo.AjaxServiceAspNetAjaxBehavior"
          bindingConfiguration="test"   binding="webHttpBinding" contract="IISServices.AjaxService" />
      </service>
      <!--<service behaviorConfiguration="EnableMetadataBehaviors" name="IISServices.CalculatorService">
        <endpoint  binding="wsHttpBinding" contract="IISServices.ICalculator" />
      </service>-->
    </services>

  </system.serviceModel>

</configuration>

生成服务,我们把项目发布一下

  

  bin里面是我们生成的dll.

配置IIS

现在我们配置一下我们的IIS

配置好IIS,我们需要做一下端口映射,注意上面的说明,只要做了端口映射,公网上的访问就会被转接到我们本地的端口上去。

做好端口映射,我们还需要关闭防火墙。

现在我们分别使用公网和内网访问一下我们的网站

我们发现两个地址都可以访问到我们的服务,所以配置成功了。

在博客园js里面调用wcf服务

我们只需要在页脚的script里面加入如下代码就可以了。注意,在调试代码的时候不要在博客园的脚本里加入alert,我就是因为刚开始加入了alert,导致整个js不在加载,这应该是博客园的验证机制。当时还以为博客园不允许跨域访问。折腾不少时间才发现去掉alert就好了。

  (function myfunction() {
        var url = "http://39.183.39.251:99/AjaxService.svc/Test?JsonCallBack=?&";
          $.getJSON(url, { "value": "跨域" }, function (msg) {
             $(".headerText").append(msg);
          });
    })();

现在保存我们的脚本,然后访问我们的页面会发现,在最上面的我的博客名下面都多了一个wcfservice:跨域字段,其中的wcfservice就是从我的本机查询过去的。

 

至此把说说同步到博客园这个工程算是完成了一半,接下来需要取qq空间的数据,然后在wcf里面访问数据。

暂且这样,下文再续。

另:因为用的家里面的网,ip是固定的,所以能查到数据。明天上班去了,笔记本也要带着,所以明天估计服务不能用了,毕竟不能在公司做端口映射。

所以明天应该看不到效果。

另:因为直接公布了本人本机的IP,希望大神们不要做黑客攻击。防火墙也关了。

本文地址:http://www.cnblogs.com/santian/p/4413361.html

博客地址:http://www.cnblogs.com/santian/

转载请以超链接形式标明文章原始出处。

时间: 2024-10-12 09:47:58

将微博或者qq空间的说说同步至博客园 wcf+js(ajax)跨域请求(1)的相关文章

实现类似微博、QQ空间等的动态加载

微博.QQ空间等的动态加载方式属于滚屏加载技术,获取当前滚动条位置来触发onscroll()函数,向服务器发起请求,将请求得到的新的数据动态加载在页面上 本文利用该原理实现了动态加载,但不是检测当前滚动条位置来触发函数,而是由按钮事件触发,因此更简单一些. 走过的弯路 1) 将目前读取到的数据库中的位置存放在session中,当要加载更多的时候,去session中获得该值,动态加载后修改session中的值 错误原因:session是有缓存的,如果停留在当前页面,得到的值还是一开始的sessio

分享内容到微博、QQ空间、人人网、开心网等社区

网上有不少分享内容到微博.QQ空间.人人网.开心网等社区的插件,但它们都有自己固定的样式,你不一定会喜欢. 或许你想保持你的网站的原状,添加上微博.QQ空间.人人网.开心网的LOGO图片,点击之后就可以把当前页面分享到上面几个社区,怎么做呢? 简单!只需要给这几个图片加上链接即可. 分享到微博的链接http://service.weibo.com/share/share.php?appkey=&title=KICCP%20Blog&url=http%3A%2F%2Fblog.kiccp.c

博客园客户端UAP开发随笔 -- 让自己的App连接世界:WinRT中的微博分享

近年来社交app可谓红红火火,大家每天发微博,分享到朋友圈也是不亦乐乎.我们的Universal应用自然也希望加入社交分享的功能.然而国内主流的社交平台微博和微信还没有推出适用于Universal应用的SDK,怎么办呢?当然敲碗等开饭也是办法,另一方面我们也可以自己做一些努力.今天我们就想分享一下我们在Universal应用中实现分享到微博功能上的探索. 准备 想要分享到微博,先得注册成为微博开发者.我们在http://open.weibo.com/上注册好开发者账号,建立个测试应用,就可以拿到

AJAX是什么? AJAX的交互模型(流程)?同步和异步的区别? AJAX跨域的解决办法?

ajax是异步的 JavaScript 和 XML.通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新.这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新. 交互流程: 1--启动  获取XMlHttpRequest对象             2--open 打开url通道,并设置异步传输              3--send 发送数据到服务器             4--服务器接受数据并处理,处理完成后返回结果              5--客户端接收

js 多个checkedBox分组互斥功能实现 由于QQ邮件无法发送暂且将js写在博客园

今天有一项目需要实现多个checkbox分组实现组内互斥功能 . 具体要求如下:大的分类分为A B C 三类, 其中 A   B 中又分为 A1 A2 A3   B1 B2 B3  二级分类,二级分类下又有 A11  A12 A13 A14  A21 A22 A31 A32  B11 B12 B13 B14 ... .要求实现 A B C 互斥 A1 A2 A3 B1 B2 B3 组内互斥.具体结构及代码如下 具体功能树如下: A A1 A11 A12 A13 A2 A21 A22 A3 A31

MarkWord - 可发布到博客园的Markdown编辑器(支持图片同步)

这一段时间一直很迷恋MarkDown,语法简单,排版整洁.对于经常要整理归档文件是绝对的好东西. 于是就去上网搜一些Markdown软件,别说还真多,各种类型,然后就挑了几个都不进人意,因为我比较喜欢把文档生成为Pdf方便查阅.但是着了好多都没这个功能,唯一找到的一个还是要收费才能使用.所以就萌生自己做(zuzhuang)一个MarkDown软件的想法,另外也是想借这个软件学习一下WPF. 在本篇我先介绍一下本软件的使用方法,看看大家的反馈,如果好的话会出一个系列,并且会考虑放出代码. Mark

博客园首页显示自己的微博

<div id="weibowidget"> <script type="text/javascript"> var weibocode = '<if' weibocode +='rame width="100%" height="300" class="share_self" frameborder="0" scrolling="no"

AJAX跨域的解决办法? 同步异步

1. HTTP协议的状态消息都有哪些? 1**:请求收到,继续处理2**:操作成功收到,分析.接受3**:完成此请求必须进一步处理4**:请求包含一个错误语法或不能完成5**:服务器执行一个完全有效请求失败   2. AJAX跨域的解决办法?   1.document.domain+iframe的设置 对于主域相同而子域不同的例子,可以通过设置document.domain的办法来解决. 具体的做法是可以在http://www.a.com/a.html和http://script.a.com/b

(转载)记:从百度空间搬家到博客园--写博客要写的舒服

转自http://www.cnblogs.com/syxchina/archive/2011/10/03/2198468.html 一直都有把百度空间搬家的想法,但由于百度空间我将就的用了快3年了,也写了很多文章,交了很多朋友,实在舍不得,但最近实在忍不住百度空间的限制,字数限制.无代码格式化.不支持windows live writer,每次写博客格式图片处理很是伤心,很多时候甚至不写博客,直接记录在doc文件来的方便省心!但想想平时很多只是汲取与互联网谷歌,不贡献点实在说不过去!下定决心,搬