科帮网

登录/注册
您现在的位置:论坛 盖世程序员(我猜到了开头 却没有猜到结局) 项目源码 > Java实现微信公众平台开发项目源码
总共48087条微博

动态微博

查看: 34558|回复: 180

Java实现微信公众平台开发项目源码

  [复制链接]
admin    

1244

主题

544

听众

1万

金钱

管理员

  • TA的每日心情

    2021-2-2 11:21
  • 签到天数: 36 天

    [LV.5]常住居民I

    管理员

    跳转到指定楼层
    楼主
    发表于 2015-03-09 20:03:34 |只看该作者 |倒序浏览
    java实现微信公众平台开发项目源码
    8 F" j* B( t" n1 `本文向大家介绍使用Java来实现微信公共平台功能,实现根据回复的内容返回对应的消息。供大家学习使用。
    7 S7 \' M- ]$ F9 n6 L. S微信服务端收发消息接口:WechatServlet.java0 P3 {; h4 w4 l/ p! ?/ g7 L0 @
    1. package demo.servlet;
      9 H# c; L+ o0 o& Y  }
    2. ) K7 c7 U! M" ]" F8 g
    3. import java.io.BufferedReader;
      " _; O( f' ]3 |3 W
    4. import java.io.IOException;! Y0 b5 {5 v5 D2 J3 w
    5. import java.io.InputStream;
      2 x9 [) Q& o( M% o5 I
    6. import java.io.InputStreamReader;& W: f. t) t$ x+ P8 N! U
    7. import java.util.Arrays;( ^3 n3 F9 E; o

    8. " i. Z4 F( r, ~/ A
    9. import javax.servlet.ServletException;- L# h) I5 V- y
    10. import javax.servlet.http.HttpServlet;* O8 a8 l- J/ B# X
    11. import javax.servlet.http.HttpServletRequest;+ h, ]' q) D- D9 ], m' V  L' ?. u4 a
    12. import javax.servlet.http.HttpServletResponse;; [1 k' G- U$ ^; @$ F) i1 G4 f8 M

    13. 6 C) D7 Q3 S9 D1 s$ l; J
    14. import demo.process.WechatProcess;1 g( Q* E7 n1 ?$ O- H- k
    15. import demo.util.SHA1;
      . D) u; ~/ t! D  F9 [
    16. /**
        W. f3 }1 s* r( F3 ^  l# {
    17. * 微信服务端收发消息接口
      & D# b% X. ^1 o, Q
    18. *
      5 Q$ @' y- Y( g
    19. * @author 科帮网
      9 [" a/ e  N; T! L
    20. * : C: s! a  Z4 u, O) |
    21. */
      4 I$ q5 o. l' H
    22. @SuppressWarnings("serial")0 _: |: W) X' N2 b/ c
    23. public class WechatServlet extends HttpServlet {. H1 g2 d8 R  ?/ R

    24. # C; Q5 R. F5 p& S* y) S/ l
    25.         // 自定义 token
      ' @) Q8 g9 T9 E5 X- p' O: Q
    26.     private String TOKEN = "52itstyle";    7 R0 d" u  n! Q& p, _0 b
    27.         public void doGet(HttpServletRequest request, HttpServletResponse response)( n+ b& k% v6 w4 t1 `6 O2 ^
    28.                         throws ServletException, IOException {9 x$ z) ~* n& ]3 h
    29.                 String signature = request.getParameter("signature");        // 随机字符串$ V8 h. _) S, j5 R3 j% m' P
    30.         String echostr = request.getParameter("echostr");        // 时间戳: w6 o; S& ]* D8 v
    31.         String timestamp = request.getParameter("timestamp");        // 随机数
      6 d' i- M" _- A! W
    32.         String nonce = request.getParameter("nonce");0 `( P" Z6 j( O7 R# ^
    33. " |7 c9 K5 f, s3 O
    34.         String[] str = { TOKEN, timestamp, nonce };
      + j3 Q% {  f! h
    35.         Arrays.sort(str); // 字典序排序
      1 V9 {  h5 Y7 y! c" d  a) d
    36.         String bigStr = str[0] + str[1] + str[2];        // SHA1加密
      5 A/ m8 \4 Y1 v
    37.         String digest = new SHA1().getDigestOfString(bigStr.getBytes()).toLowerCase();        5 d+ [. ?2 B- q1 m- Q4 P$ ?
    38.         // 确认请求来至微信
      & m: a9 a7 y3 G5 B
    39.         if (digest.equals(signature)) {
      8 R" ?8 @" j" E1 S" A
    40.                 request.setCharacterEncoding("UTF-8");
      1 p- ?7 Q8 q4 a2 N* |- a
    41.                 response.setCharacterEncoding("UTF-8");# |  L% E, O0 N& j9 M0 y7 T
    42.                
      " C7 D) V% j1 L6 u# M
    43.                 /** 读取接收到的xml消息 */
      & r8 M+ \; G" O1 j5 V# f% l
    44.                 StringBuffer sb = new StringBuffer();3 J4 h( k& k% N0 _' y
    45.                 InputStream is = request.getInputStream();
      7 I& D$ l" F0 H) \( Q4 I6 O+ Z, S
    46.                 InputStreamReader isr = new InputStreamReader(is, "UTF-8");! |6 F6 U3 M* R" i0 R/ v" R
    47.                 BufferedReader br = new BufferedReader(isr);
      ! d7 i: X/ Z, z$ |& n5 U
    48.                 String s = "";
      ( F  a9 t: y) m6 Q3 W' P
    49.                 while ((s = br.readLine()) != null) {8 a1 F4 S  u, I, P, J, E2 B: h3 N- b
    50.                         sb.append(s);
      ( _4 }4 r8 u/ B" K9 B$ l' s, ]
    51.                 }
      5 w( W) ]* {) x/ I  o
    52.                 String xml = sb.toString();        //次即为接收到微信端发送过来的xml数据
      " k% C, d( z7 M/ U. K' S
    53.                 , p; i8 y- L: p' X0 e$ A* M0 t
    54.                 String result = "";
      + J/ W0 @; }2 f/ g% z& @  W
    55.                 /** 判断是否是微信接入激活验证,只有首次接入验证时才会收到echostr参数,此时需要把它直接返回 */) V9 `  O& o, T3 Q& ^
    56.                 if (echostr != null && echostr.length() > 1) {
        @8 p& j+ y- p6 w1 F: X& c) K! z
    57.                         result = echostr;
      $ d6 B( S1 [$ n& N
    58.                 } else {
      6 _, I* u4 Z9 a% F$ [+ B9 p
    59.                         //正常的微信处理流程
      & N* m6 `% p/ e/ L  a# @
    60.                         result = new WechatProcess().processWechatMag(xml);3 z" I+ S/ Y: k8 y1 F
    61.                 }
      " C- i2 K" g- ^% G6 e8 ~
    62.                 System.out.println("说的什么"+result);6 p; e+ v8 Y- z7 T5 U6 [
    63.                 response.getWriter().print(result);) x" `$ [# F! E
    64.         }
      $ p0 V( }, @$ \1 q  {
    65.         }2 Y. l( x8 f  p* k, ^

    66. 1 H7 m- R& y  _* H# R8 ]% C6 y
    67.         /**7 U) M" Y1 H5 m6 e: K4 f
    68.          * The doPost method of the servlet. <br>
      ) Y: b. I1 ~" u: f( R: m
    69.          *
      , E. v8 z$ O$ r: w$ B
    70.          * This method is called when a form has its tag value method equals to
      ' t. z8 u% G) g. a
    71.          * post.
      7 L% H1 O1 f. Z; [% {
    72.          * 4 p/ v% `* H3 M: o' J8 o. `! E* t
    73.          * @param request& |2 l1 T2 ^( Q# X% r
    74.          *            the request send by the client to the server7 B; ~) X+ x3 B8 Q# H
    75.          * @param response! x& \( h  h1 I$ I  W5 h" b
    76.          *            the response send by the server to the client
      $ c7 @3 b% x  V1 H
    77.          * @throws ServletException
      9 j' V+ P5 G: E- A  d
    78.          *             if an error occurred6 [5 \- n: w9 P& H
    79.          * @throws IOException( y7 o- I+ k! D6 u* ^- N4 U
    80.          *             if an error occurred: s4 j7 M( Q! ^
    81.          */
      1 p- ^1 ^0 e- o9 a& ^. F
    82.         public void doPost(HttpServletRequest request, HttpServletResponse response), E) q, s+ ?! T. c
    83.                         throws ServletException, IOException {% V/ v5 m% T* a- }2 @- M" P
    84.                 doGet(request, response);
      * u! w8 b. c+ m4 j1 `" J$ a
    85.         }
      $ ?& Z' r4 w3 F  g* t/ P" M+ W

    86. : {5 q0 f8 @) B' T
    87. }; K* \& U. E# A* ^
    复制代码
    接收到的微信xml实体类:ReceiveXmlEntity.java, y$ e% ^* g2 q* I: @4 x/ c
    1. package demo.entity;' |  K+ M& z8 C4 j2 K  \
    2. /**
      ; }6 n1 `& Q) M6 J% g
    3. * 接收到的微信xml实体类- y6 p' f& U1 M3 ^
    4. * @author 科帮网
      $ b6 N! O; I; g, L/ @6 z: P
    5. *
      & o/ P: P2 m. K; L" ^+ s
    6. */
      0 ^" ?' \5 F1 O4 n6 i
    7. public class ReceiveXmlEntity {
      - M5 v; p* e" \2 J- s1 {$ d
    8.         private String ToUserName="";2 S2 n  ]" t1 P& U& P# o
    9.         private String FromUserName="";6 b; j# z# n) u9 q4 S, D: |& O' `
    10.         private String CreateTime="";
      - n  T# ~# a  \9 u
    11.         private String MsgType="";8 x! p) G0 j+ ~+ R
    12.         private String MsgId="";
      5 Z2 u, v: h0 J
    13.         private String Event="";# \; f2 A( R) e0 w( r+ R
    14.         private String EventKey="";9 l. z: K+ d! i& o
    15.         private String Ticket="";
      " B- u) S3 n. b6 K
    16.         private String Latitude="";
      7 g( o, `% s: C" [+ m' L
    17.         private String Longitude="";
      2 b8 H& p: |4 c8 j2 x9 A
    18.         private String Precision="";  ^9 y$ M, ]4 Q. T% i* y( a
    19.         private String PicUrl="";
      $ {& o$ O: ^- t. R0 G8 F/ c5 D
    20.         private String MediaId="";
      / A$ R7 v. J8 |/ h1 n) F' b" K" [; w
    21.         private String Title="";0 d) o+ ~. R# A, ^
    22.         private String Description="";
      5 r, b$ P) j$ j" u
    23.         private String Url="";
      $ {" n4 r0 n5 k& e) W, Y
    24.         private String Location_X="";
      1 r$ f9 N7 L! {% q
    25.         private String Location_Y="";4 X* e' O0 \4 e
    26.         private String Scale="";
      - N: f/ u1 k" T0 x6 W
    27.         private String Label="";
      ; c5 `: S" X. y6 P) K: H
    28.         private String Content="";
      3 j8 h! y* p( g, h3 c! U9 B& r( B
    29.         private String Format="";
      8 |/ C9 a! ~, H/ v, a8 y
    30.         private String Recognition="";: B. n' ^/ [6 O' u: L. Z
    31.         4 ^5 l# ]$ t/ a( P) g
    32.         public String getRecognition() {0 s( ~3 ^# e: [% V
    33.                 return Recognition;
      5 b  z' }% [( v( z) D3 [: l5 a
    34.         }; n1 k5 E( h! z! V9 B& D
    35.         public void setRecognition(String recognition) {
      6 N, Y: {- L) o, {/ s
    36.                 Recognition = recognition;
      & D, `) Y4 K+ {0 x9 J. F9 |
    37.         }
      1 J. C! c( V7 z6 O' V, D' t
    38.         public String getFormat() {0 i% a) w6 k7 \& Y# z
    39.                 return Format;
      3 z1 H2 J& S& N0 c
    40.         }
        ]/ T& H* E& {1 I5 v& M
    41.         public void setFormat(String format) {
      0 q& J7 s, T+ S/ \3 [6 v- x
    42.                 Format = format;0 Y$ f$ b; S$ F+ j
    43.         }6 c/ M5 h4 ~) S4 s. V4 l% u
    44.         public String getContent() {
      & u1 Z  N9 L" u+ ?3 g2 }! v
    45.                 return Content;
      7 f8 Z- r5 M0 v1 ?/ H
    46.         }
      ) t% o) ^1 g# A4 I2 K
    47.         public void setContent(String content) {
      % I  Q4 s2 ^# M) y) R
    48.                 Content = content;
      + u1 L- A; L2 v' l9 c5 A
    49.         }
        E# x6 ]4 n+ J, L- t1 H
    50.         public String getLocation_X() {6 Y( U* k' w( j* A( O
    51.                 return Location_X;
      2 k, O2 l0 k5 I& |# I+ N
    52.         }
      5 `4 Z; Q0 @! D" z
    53.         public void setLocation_X(String locationX) {  F3 B2 D5 h( z0 W
    54.                 Location_X = locationX;$ p. {7 P* S6 \
    55.         }
      + s7 x7 q: c, C1 \
    56.         public String getLocation_Y() {! A" M/ O# x7 d& E( X. h
    57.                 return Location_Y;, r) W1 ^+ e. [/ p% w
    58.         }) s# ^& H! A- w; s7 S, t3 M
    59.         public void setLocation_Y(String locationY) {& @7 @- j' ^8 B
    60.                 Location_Y = locationY;1 U; V: R! v! `9 t
    61.         }
      1 z! D6 o' H) O3 ], \
    62.         public String getScale() {1 Z' U3 U* l! g4 ^" p7 z0 m/ D' f
    63.                 return Scale;
      ) K# }3 P6 d$ p6 X; l
    64.         }
      & r3 m5 |1 o4 I+ R2 {3 u4 A
    65.         public void setScale(String scale) {
      8 {# [, q' Y; [
    66.                 Scale = scale;; X5 e& H% X. |& D: U
    67.         }
      ; k/ l8 v9 j. C+ Z7 H: E
    68.         public String getLabel() {
      2 D% h% N7 b; A/ b: h  Y$ W; ~7 s: s
    69.                 return Label;
        v" a3 w. H7 V, v3 g% W4 I
    70.         }
      " I' ]2 F/ J8 g* A! r5 I
    71.         public void setLabel(String label) {8 o) e9 ]6 {: H. x+ o/ d
    72.                 Label = label;
      $ A8 [9 m- L. ^! _& E
    73.         }
        Y4 Q  @" |) C  b+ t/ C
    74.         public String getTitle() {
      4 n) g. v  ?$ D  Z, z, r
    75.                 return Title;  {- \, o3 ], B. V& g% A8 O
    76.         }
      0 ?- ?# K/ o0 c. @
    77.         public void setTitle(String title) {1 Y) V2 K+ g9 R. C( O. d
    78.                 Title = title;
      2 W, ]7 J- R- E/ I* {8 c
    79.         }
      # Q. b6 t) r5 B9 L
    80.         public String getDescription() {% ^5 a8 _1 k- W$ |1 W, q% x
    81.                 return Description;1 l' M" g# [- o  z' k
    82.         }
      7 E. @6 r& i( J7 q9 `" @  ^" U- U" p
    83.         public void setDescription(String description) {
      2 i1 L1 {3 Y- l
    84.                 Description = description;
      4 Y3 S, e& H! [. i3 k
    85.         }8 J4 X, b6 @6 ^8 f1 |, M- W
    86.         public String getUrl() {8 u4 T+ ]3 l( \. z8 \; I2 T
    87.                 return Url;
      * Q- Q7 \+ Y1 \. `# `
    88.         }6 C* e: |/ b9 w) @
    89.         public void setUrl(String url) {: v; I9 M% D, a7 r, a8 d7 A, |% c
    90.                 Url = url;1 ]; S6 q, ~- Q  u7 A
    91.         }
      3 R$ ]: A- z7 l3 h7 X' H6 ?& j2 l9 o
    92.         public String getPicUrl() {
      ( T( U9 v0 P! T! A
    93.                 return PicUrl;% w" D9 V& a4 \- ], j" j& j
    94.         }
      ; G- _1 H7 `" s5 I- m; Y( L
    95.         public void setPicUrl(String picUrl) {. F4 h9 B9 W5 r8 ~7 [; v
    96.                 PicUrl = picUrl;5 W+ r" c, E3 R! k/ M
    97.         }
      ( j$ m* E" ]/ x" M# Y7 O
    98.         public String getMediaId() {
      ; v1 a9 s; s+ i4 g) m, i( ^( D
    99.                 return MediaId;0 @5 C) c  w: I" M
    100.         }/ R; u* r  ~( W. _
    101.         public void setMediaId(String mediaId) {
      8 P+ u6 O1 p! m. a3 w/ x
    102.                 MediaId = mediaId;& _* D: G7 T, u
    103.         }
      , B! b, J  X: l" o
    104.         public String getEventKey() {
      + f+ J& Y  y. b$ A! w# ~2 z- O
    105.                 return EventKey;: Y: f. @  O, f. ~! ^' Z
    106.         }
      3 I; R2 |7 t/ i4 f
    107.         public void setEventKey(String eventKey) {
      4 ?, }( f% L2 o6 H4 @& V. g
    108.                 EventKey = eventKey;. @( Y7 t$ g7 B3 S% _/ f
    109.         }* l7 ^0 C9 p8 Z. e, D* q
    110.         public String getTicket() {
      & O% e/ B" _; j# K
    111.                 return Ticket;
      ( o* A2 L8 k4 C+ m4 ?3 J5 d( |4 a! _
    112.         }
      $ X: @+ f5 l2 q. a# S: w+ j" v
    113.         public void setTicket(String ticket) {8 P5 m, K  K; _5 r: S+ G7 G
    114.                 Ticket = ticket;+ O; e7 v9 k! q7 ^# Q
    115.         }7 V* b6 w3 Z8 G8 Y
    116.         public String getLatitude() {1 n5 [/ b; u9 @; @5 Z
    117.                 return Latitude;
      ! u8 Y" s( q; R" E
    118.         }: @8 m# n( h: t, h+ B5 B
    119.         public void setLatitude(String latitude) {0 v- D2 d' O1 c8 T) N
    120.                 Latitude = latitude;
      / Q! I5 D0 B$ t& I* c2 p& J
    121.         }( n+ n( Z" M- v! C( a
    122.         public String getLongitude() {
      3 s+ S( n6 z. v& C
    123.                 return Longitude;+ R( [5 c! C% {; \
    124.         }# k% o( b; W; y9 f- A4 g
    125.         public void setLongitude(String longitude) {2 P& j( O' P5 H( X  C. n
    126.                 Longitude = longitude;% i& A$ Z; c' v2 G7 u
    127.         }
      # _6 m; d# H! {' F. I
    128.         public String getPrecision() {
      ' E' v8 ]0 f5 y. _+ ^" S* {6 ^2 n' ~
    129.                 return Precision;1 O) Y% q4 R/ ]: Q; y, b
    130.         }+ y5 y6 ]/ I, {. m* V- w* Y3 g
    131.         public void setPrecision(String precision) {/ c4 a5 c( C, A1 \
    132.                 Precision = precision;
      ) l0 L0 u0 i9 F7 u( q( n% b
    133.         }
      2 |7 i" ?2 ~" ^$ O
    134.         public String getEvent() {% ]( K) `; c* i0 c2 p5 O8 u4 u
    135.                 return Event;
      8 G+ k2 i7 ~0 V2 S
    136.         }) p9 I3 S9 W7 o6 v) d
    137.         public void setEvent(String event) {' H$ y+ `- B0 d: X  G: [6 q
    138.                 Event = event;' F( y2 `7 {$ T  n" g
    139.         }$ l% c% G% ~( v  \* p( e
    140.         public String getMsgId() {. \6 |. r" D; t
    141.                 return MsgId;
      0 r2 Y( I0 Q) j! [0 g2 M
    142.         }( F% b5 M( x1 Y7 m2 ~. n
    143.         public void setMsgId(String msgId) {* m; y% @9 X& _
    144.                 MsgId = msgId;
      ) e8 G) ^: z  d  w* l) b
    145.         }
      ! Q& a, h/ Q# U* n+ k
    146.         public String getToUserName() {4 |+ \! K6 N7 }6 p3 T
    147.                 return ToUserName;
      / ^% x$ [3 b/ v" n. U
    148.         }
      $ @  L* g9 j2 f0 @! C
    149.         public void setToUserName(String toUserName) {9 V) ^% j7 }9 r8 {& I8 t3 S
    150.                 ToUserName = toUserName;- b' U$ Z' E6 c
    151.         }
      ! ~' z4 i* }. \3 _" a# u' R
    152.         public String getFromUserName() {! P7 J" `4 ^% D% d8 ?* W# Y, M
    153.                 return FromUserName;
      ) Y) u3 \( t+ V, u! G$ T$ p# w# \6 g
    154.         }  |- I- {3 U8 c
    155.         public void setFromUserName(String fromUserName) {
      5 t% G" @$ l: A3 j! \  E
    156.                 FromUserName = fromUserName;0 f# L" H9 Q' u* j4 R1 Z  }
    157.         }
      5 n/ Q" E+ T1 D/ n9 ~: r
    158.         public String getCreateTime() {
      # w$ S7 U, Z9 c3 |/ L3 k) t* I% A
    159.                 return CreateTime;! C& D4 K3 b' K
    160.         }
      . t1 n" J! A% O# z( i
    161.         public void setCreateTime(String createTime) {; v' ]* j4 G% T/ O2 X
    162.                 CreateTime = createTime;
      ( l. s" [8 c; M0 D
    163.         }3 I" w2 X- G* Y) q  `# b" B
    164.         public String getMsgType() {4 r3 M- w7 R7 @% S
    165.                 return MsgType;8 p6 P( h1 r8 {) w6 L
    166.         }
      % E* F0 X# x( M4 u+ O; \9 ~. v, H9 a
    167.         public void setMsgType(String msgType) {
      $ ~/ O9 b7 p! J) j8 M
    168.                 MsgType = msgType;( g) G- y1 [3 d3 l) D: s
    169.         }
      - |$ X9 I+ F& a2 S
    170. }/ e$ R( W1 D+ E0 {" ?/ H6 V
    复制代码
    调用图灵机器人api接口,获取智能回复内容 TulingApiProcess.java9 J/ Z9 }& R- X$ \* t0 O

    9 E( }( y7 h. n5 o
    1. package demo.process;5 ?6 n8 K& I! [1 h4 G5 r& W! Z1 {4 K
    2. " F2 P( a& E9 n" U- U. l
    3. import java.io.IOException;
        A* R" Z+ D3 o' v- d. ~
    4. import java.io.UnsupportedEncodingException;& _4 i' z" B& R5 O
    5. import java.net.URLEncoder;; {; u" A+ B0 Y1 T; Q1 s7 @1 u

    6. ; i, I; ?) }1 j+ U5 m( _( j
    7. import org.apache.http.HttpResponse;/ a" T* K2 Y4 w) n6 X3 P( o
    8. import org.apache.http.client.ClientProtocolException;
      + }) u& G, {% F3 g' r
    9. import org.apache.http.client.methods.HttpGet;. S; P2 i9 m6 s/ ^4 i' h
    10. import org.apache.http.impl.client.HttpClients;% U# R$ t8 P6 V0 W- {0 Q
    11. import org.apache.http.util.EntityUtils;' D; L8 f. y% p2 I. X' H, c
    12. import org.json.JSONException;
      1 x# v8 E/ P: O" q
    13. import org.json.JSONObject;# ~8 |, n  v9 r: e
    14. / E( c& v  J; _; k
    15. /**
      8 s4 B+ c# Q. ^8 h
    16. * 调用图灵机器人api接口,获取智能回复内容9 v/ P; t( F2 ]: y/ D
    17. * @author 科帮网
      / l8 H6 O/ y: o! L% k3 S+ [
    18. *
      ( G& [1 h0 p3 b/ @+ N
    19. */
      - c4 T8 j6 q, X# n' }
    20. public class TulingApiProcess {
      * j! L( m) L2 e+ V/ u* [& h
    21.         /**/ _; {9 n; j! M  l* U6 v
    22.          * 调用图灵机器人api接口,获取智能回复内容,解析获取自己所需结果7 M& H+ H' N% b" g% W6 V, B7 }& [
    23.          * @param content
      - }7 i4 A/ i$ i
    24.          * @return
      1 |- d6 @9 a) O* x0 _
    25.          */% Z# f3 b) N- t6 l$ }2 I
    26.         public String getTulingResult(String content){; O- B9 B. |2 K  i* P+ @; c, |
    27.                 /** 此处为图灵api接口,参数key需要自己去注册申请 */0 g* q8 r) V9 [1 a
    28.                 String apiUrl = "http://www.tuling123.com/openapi/api?key=2a31b2f601f74b54ea13db1c82fe5d71&info=";: ]- z, [3 y9 S
    29.                 String param = "";
      / n' C9 G* s( k! `* B! |
    30.                 try {
      ( ?) R! h; l. V8 g
    31.                         param = apiUrl+URLEncoder.encode(content,"utf-8");9 Y- m: c7 K( q1 @& p, V/ {/ \
    32.                 } catch (UnsupportedEncodingException e1) {0 Q9 C6 ~- l- m' i" x* b
    33.                         e1.printStackTrace();
      # R5 c* d0 G3 R. ^
    34.                 } //将参数转为url编码
      # T! l( r0 K+ O* n  N
    35.                 /** 发送httpget请求 */
      ( V3 \  \; L1 w) j
    36.                 HttpGet request = new HttpGet(param);
      0 o* T# u! Y5 H% z5 y. D
    37.                 String result = "";
      $ }9 c  z" n0 ~4 r. n
    38.                 try {
      : a. R8 a) M. w" }& x) P4 ]
    39.                         HttpResponse response = HttpClients.createDefault().execute(request);) y) F6 I; @) \! D# _) d8 l' w" P3 j
    40.                         if(response.getStatusLine().getStatusCode()==200){. U5 {4 m# r' T! B8 p+ s7 w
    41.                                 result = EntityUtils.toString(response.getEntity());, s% f" _2 Y; F7 V, I9 [5 t( @/ J
    42.                         }
      , B2 [( [$ y5 G( V7 `/ R& D$ g8 g
    43.                 } catch (ClientProtocolException e) {. i% Y8 G3 D% }) Z6 ^4 Z
    44.                         e.printStackTrace();
      . c$ K. B  Y' M+ M
    45.                 } catch (IOException e) {* S: F& R1 \% |, C) T% X* m
    46.                         e.printStackTrace();! U2 c1 a. f, ?! a$ @; c- E6 G
    47.                 }- b" M3 x0 X/ r: W1 V0 |; f
    48.                 /** 请求失败处理 */
      $ V2 U/ z" h) T. M. O4 z) ~
    49.                 if(null==result){" n5 I: m4 f  ^( q4 n) U1 x1 f+ g
    50.                         return "对不起,你说的话真是太高深了……";  W0 g# x6 g' P* K0 R+ M
    51.                 }
      * u3 E9 w" b+ ]8 e2 ~
    52.                 3 T1 |; v2 f6 Z0 _: `
    53.                 try {
      - Q4 y" ?. N* x; u) O
    54.                         JSONObject json = new JSONObject(result);+ X$ J0 H6 k( C% J9 h
    55.                         //以code=100000为例,参考图灵机器人api文档
      * v! t" g) _6 b/ s4 H! Y5 i% q
    56.                         if(100000==json.getInt("code")){& T2 U& M5 y2 d; _' J" ?- c
    57.                                 result = json.getString("text");) m# F3 j" r; t4 ^
    58.                         }
      0 X1 S  t" _( [( l6 E8 ^
    59.                 } catch (JSONException e) {
      - p- ^# D0 n5 ~* A% p' L
    60.                         e.printStackTrace();
      $ Q# j0 d$ I- A+ K; k4 w
    61.                 }7 C$ A, j5 \1 m" O' I7 ?% C
    62.                 return result;/ \, q) u# w' t( u# q
    63.         }2 ~: i9 Q( B$ J& r# V: l2 p, R
    64. }
      ( m7 z( I3 s, @* H- t
    复制代码
    # R/ J* @/ o0 H* ^' n
    web.xml 配置:/ `6 `8 @+ r; B. O3 G
    1. <?xml version="1.0" encoding="UTF-8"?>0 ]# O. m4 |% H9 C, ^3 D
    2. <web-app version="2.5"
      + I# w+ y) G$ ]9 O
    3.         xmlns="http://java.sun.com/xml/ns/javaee" " ]& Y7 |6 l2 d- R" x; q! A
    4.         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" . i; p6 h0 \. c* @5 k
    5.         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee , F& i; F7 s5 w
    6.         http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
      3 O5 q2 n2 t( ^1 O. s" ~
    7.   <servlet>
      ! j$ s* i  ^1 k7 f6 o9 ^+ G$ u+ A& q3 r
    8.     <servlet-name>WechatServlet</servlet-name>
      " r# b* e. [# A4 F
    9.     <servlet-class>demo.servlet.WechatServlet</servlet-class>; L/ @3 ~5 G, K8 {7 ?! m0 l
    10.   </servlet>
      ! B2 c2 l* s+ y! L

    11. 9 d! S, `7 ?, C9 {. v# d
    12.   <servlet-mapping>. m- E6 v! L7 A5 ^% T7 S
    13.     <servlet-name>WechatServlet</servlet-name>7 W  M" d: [8 R/ D! g! @
    14.     <url-pattern>/wechat.do</url-pattern>
      - Q; ^0 ~. L4 O4 I3 T/ {) Y
    15.   </servlet-mapping>
      / h( g3 B) n% U( n# @" D
    16.   <welcome-file-list>
      + b5 k5 J) H+ R& R1 S
    17.     <welcome-file>index.jsp</welcome-file>9 f* M. y( d+ _: c! {# i$ D, I
    18.   </welcome-file-list>) C) G- A" ^1 d/ v3 M& i
    19. </web-app>
      ; M( A( G& n& h/ P$ x3 p
    复制代码

    0 Z; O- K5 M& f项目源码下载地址:- G2 u+ V4 `$ v1 I4 p4 W
    游客,如果您要查看本帖隐藏内容请回复

    # Q; i0 n3 ?) t; C/ A- E7 J: A( K
    2 K" ~3 E" R3 \* o& C& _( a

    科帮网 1、本主题所有言论和图片纯属会员个人意见,与本社区立场无关
    2、本站所有主题由该帖子作者发表,该帖子作者与科帮网享有帖子相关版权
    3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和科帮网的同意
    4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
    5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
    6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
    7、科帮网管理员和版主有权不事先通知发贴者而删除本文


    JAVA爱好者①群:JAVA爱好者① JAVA爱好者②群:JAVA爱好者② JAVA爱好者③ : JAVA爱好者③

    红红火火恍恍惚惚

    6

    主题

    0

    听众

    134

    金钱

    三袋弟子

    该用户从未签到

    沙发
    发表于 2015-03-10 12:31:31 |只看该作者
    好东西 收下了 哈哈111111111111

    点评

    罗四海876  老实说这项目源码确实不错啊,值得学习!  发表于 2016-10-27 21:14 回复
    回复

    使用道具 举报

    1

    主题

    0

    听众

    448

    金钱

    五袋长老

    该用户从未签到

    板凳
    发表于 2015-04-29 18:03:41 |只看该作者
    好东西 收下了. 有帮助哦。
    回复

    使用道具 举报

    2

    主题

    0

    听众

    128

    金钱

    三袋弟子

    该用户从未签到

    地板
    发表于 2015-05-04 00:24:55 |只看该作者
    这个全吗?我也最近在学习微信,先下载下来看看,谢谢分享. R4 j. o- @, Z3 P- }

    点评

    罗四海876  老实说这项目源码确实不错啊,值得学习!老实说这项目源码确实不错啊,值得学习!老实说这项目源码确实不错啊,值得学习!  发表于 2016-10-27 21:15 回复
    回复

    使用道具 举报

    3

    主题

    0

    听众

    167

    金钱

    三袋弟子

    该用户从未签到

    5#
    发表于 2015-05-15 22:58:44 |只看该作者
    看看。
    回复

    使用道具 举报

    1

    主题

    0

    听众

    93

    金钱

    三袋弟子

    该用户从未签到

    6#
    发表于 2015-06-19 10:18:16 |只看该作者
    一直想做微信公众平台,但不知道如何入手,真心表示感谢
    回复

    使用道具 举报

    2

    主题

    0

    听众

    151

    金钱

    三袋弟子

    该用户从未签到

    7#
    发表于 2015-08-25 18:42:13 |只看该作者
    谢谢 分享。。。。。。。。。。。。。。。。。

    点评

    罗四海876  老实说这项目源码确实不错啊,值得学习!老实说这项目源码确实不错啊,值得学习!老实说这项目源码确实不错啊,值得学习!老实说这项目源码确实不错啊,值得学习!老实说这项目源码确实不错啊,值得学习!  发表于 2016-10-27 21:16 回复
    回复

    使用道具 举报

    3

    主题

    1

    听众

    898

    金钱

    五袋长老

    该用户从未签到

    8#
    发表于 2015-09-01 15:36:11 |只看该作者
    谢谢楼主分享源码,共同进步
    回复

    使用道具 举报

    4

    主题

    0

    听众

    139

    金钱

    三袋弟子

    该用户从未签到

    9#
    发表于 2015-09-07 14:04:09 |只看该作者
    学习一下,谢谢楼主的分享
    回复

    使用道具 举报

    4

    主题

    0

    听众

    96

    金钱

    一袋弟子

    该用户从未签到

    10#
    发表于 2015-09-12 19:53:39 |只看该作者
    共享共享感谢
    回复

    使用道具 举报

    快速回复
    您需要登录后才可以回帖 登录 | 立即注册

       

    关闭

    站长推荐上一条 /1 下一条

    发布主题 快速回复 返回列表 联系我们 官方QQ群 科帮网手机客户端
    快速回复 返回顶部 返回列表