微信平台java
A. 如何實現java程序與微信公眾平台之間實現消息推送
java程序與微信公眾平台之間實現消息推送方法:1、本地資料庫中存放著小程序用戶表和微信公眾號的表,下面就是向某一個小程序用戶推送微信公眾號信息
2、在小程序用戶表中任意取一個用戶A信息,用戶A的openId和unionId,通過unionId到公眾號表裡去檢索對應的A用戶微信公眾號的openId
3、在微信公眾號上選擇一個模板消息,編輯完要發送的的內容後,再請求發送模板消息的介面
關於微信公眾號不能推送的,或者推送報錯的,推送的miniprogram下的appid對應的小程序必須是已審核並發布的才可以推送。
推送軟體用極光推送,實現多種消息類型,開發者可以輕松地通過極光發送各個移動平台的系統通知,還可以在控制台編輯多種富文本展示模板; 極光還提供自定義消息的透傳,客戶端接到消息內容後根據自己的邏輯自由處理。
B. 微信公眾平台可以用java寫嗎
可以,我現在的項目就是java後台開發的微信公眾平台,唯一要注意的就是公眾平台openid的使用
C. 請問想要微信平台開發,需要JAVA很精通嗎
你想要開發微信如果是android平台你需要對java肯定要懂得多啊,android也是用java寫的,如果你想要對蘋果平台開發那麼你就要對object c熟息,如果你對諾基亞的winphone8平台開發的你就要對C#熟悉,總之你必須要熟悉java,能對父類的方法讀寫,並能看懂父類源碼,那沒什麼問題,因為很多時候android提供的插件功能並不能完全適應我們的業務 結構,必須重寫父類的方法,你連父類的代碼你都看不懂那那個地方就卡在那裡了,想要接著做下去都很讓你煩惱,我也是做android平台開發的,在2個月前從web方向轉android方向,不過我有很好的功底,差不多2,3個星期就可以學會了,你可以看一下若水的android視頻,那裡有騰訊微博的項目視頻,那裡也有叫你如何看官網的API,你會做新浪微博,其實微信也一個道理,我相信你如果有java功底,看完他的視頻開發個微信不是什麼難題,如果你有什麼問題也可以問我,也不是要精通,但一定要熟練,什麼叫精通,能把Hibernate進行重寫,並在原有的代碼上改進,那才叫精通,那得要2-5年工作經驗才行,給分吧,謝謝
D. 在微信公共平台 java怎麼開發
用java編寫後台服務端,之後把服務端進行部署,把部署後的url填寫到微信公眾號開發者中心的相應位置。
E. 如何用java開發微信
說明:
本次的教程主要是對微信公眾平台開發者模式的講解,網路上很多類似文章,但很多都讓初學微信開發的人一頭霧水,所以總結自己的微信開發經驗,將微信開發的整個過程系統的列出,並對主要代碼進行講解分析,讓初學者盡快上手。
在閱讀本文之前,應對微信公眾平台的官方開發文檔有所了解,知道接收和發送的都是xml格式的數據。另外,在做內容回復時用到了圖靈機器人的api介面,這是一個自然語言解析的開放平台,可以幫我們解決整個微信開發過程中最困難的問題,此處不多講,下面會有其詳細的調用方式。
1.1 在登錄微信官方平台之後,開啟開發者模式,此時需要我們填寫url和token,所謂url就是我們自己伺服器的介面,用WechatServlet.java來實現,相關解釋已經在注釋中說明,代碼如下:
[java]view plain
packagedemo.servlet;
importjava.io.BufferedReader;
importjava.io.IOException;
importjava.io.InputStream;
importjava.io.InputStreamReader;
importjava.io.OutputStream;
importjavax.servlet.ServletException;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
importdemo.process.WechatProcess;
/**
*微信服務端收發消息介面
*
*@authorpamchen-1
*
*/
{
/**
*ThedoGetmethodoftheservlet.<br>
*
*.
*
*@paramrequest
*
*@paramresponse
*
*@throwsServletException
*ifanerroroccurred
*@throwsIOException
*ifanerroroccurred
*/
publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
/**讀取接收到的xml消息*/
StringBuffersb=newStringBuffer();
InputStreamis=request.getInputStream();
InputStreamReaderisr=newInputStreamReader(is,"UTF-8");
BufferedReaderbr=newBufferedReader(isr);
Strings="";
while((s=br.readLine())!=null){
sb.append(s);
}
Stringxml=sb.toString();//次即為接收到微信端發送過來的xml數據
Stringresult="";
/**判斷是否是微信接入激活驗證,只有首次接入驗證時才會收到echostr參數,此時需要把它直接返回*/
Stringechostr=request.getParameter("echostr");
if(echostr!=null&&echostr.length()>1){
result=echostr;
}else{
//正常的微信處理流程
result=newWechatProcess().processWechatMag(xml);
}
try{
OutputStreamos=response.getOutputStream();
os.write(result.getBytes("UTF-8"));
os.flush();
os.close();
}catch(Exceptione){
e.printStackTrace();
}
}
/**
*ThedoPostmethodoftheservlet.<br>
*
*
*post.
*
*@paramrequest
*
*@paramresponse
*
*@throwsServletException
*ifanerroroccurred
*@throwsIOException
*ifanerroroccurred
*/
publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
doGet(request,response);
}
}
<?xmlversion="1.0"encoding="UTF-8"?>
<web-appversion="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<servlet>
<description></description>
<display-name></display-name>
<servlet-name>WechatServlet</servlet-name>
<servlet-class>demo.servlet.WechatServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>WechatServlet</servlet-name>
<url-pattern>/wechat.do</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
packagedemo.process;
importjava.util.Date;
importdemo.entity.ReceiveXmlEntity;
/**
*微信xml消息處理流程邏輯類
*@authorpamchen-1
*
*/
publicclassWechatProcess{
/**
*解析處理xml、獲取智能回復結果(通過圖靈機器人api介面)
*@paramxml接收到的微信數據
*@return最終的解析結果(xml格式數據)
*/
publicStringprocessWechatMag(Stringxml){
/**解析xml數據*/
ReceiveXmlEntityxmlEntity=newReceiveXmlProcess().getMsgEntity(xml);
/**以文本消息為例,調用圖靈機器人api介面,獲取回復內容*/
Stringresult="";
if("text".endsWith(xmlEntity.getMsgType())){
result=newTulingApiProcess().getTulingResult(xmlEntity.getContent());
}
/**此時,如果用戶輸入的是「你好」,在經過上面的過程之後,result為「你也好」類似的內容
*因為最終回復給微信的也是xml格式的數據,所有需要將其封裝為文本類型返回消息
**/
result=newFormatXmlProcess().formatXmlAnswer(xmlEntity.getFromUserName(),xmlEntity.getToUserName(),result);
returnresult;
}
}
packagedemo.entity;
/**
*接收到的微信xml實體類
*@authorpamchen-1
*
*/
publicclassReceiveXmlEntity{
privateStringToUserName="";
privateStringFromUserName="";
privateStringCreateTime="";
privateStringMsgType="";
privateStringMsgId="";
privateStringEvent="";
privateStringEventKey="";
privateStringTicket="";
privateStringLatitude="";
privateStringLongitude="";
privateStringPrecision="";
privateStringPicUrl="";
privateStringMediaId="";
privateStringTitle="";
privateStringDescription="";
privateStringUrl="";
privateStringLocation_X="";
privateStringLocation_Y="";
privateStringScale="";
privateStringLabel="";
privateStringContent="";
privateStringFormat="";
privateStringRecognition="";
publicStringgetRecognition(){
returnRecognition;
}
publicvoidsetRecognition(Stringrecognition){
Recognition=recognition;
}
publicStringgetFormat(){
returnFormat;
}
publicvoidsetFormat(Stringformat){
Format=format;
}
publicStringgetContent(){
returnContent;
}
publicvoidsetContent(Stringcontent){
Content=content;
}
publicStringgetLocation_X(){
returnLocation_X;
}
publicvoidsetLocation_X(StringlocationX){
Location_X=locationX;
}
publicStringgetLocation_Y(){
returnLocation_Y;
}
publicvoidsetLocation_Y(StringlocationY){
Location_Y=locationY;
}
publicStringgetScale(){
returnScale;
}
publicvoidsetScale(Stringscale){
Scale=scale;
}
publicStringgetLabel(){
returnLabel;
}
publicvoidsetLabel(Stringlabel){
Label=label;
}
publicStringgetTitle(){
returnTitle;
}
publicvoidsetTitle(Stringtitle){
Title=title;
}
publicStringgetDescription(){
returnDescription;
}
publicvoidsetDescription(Stringdescription){
Description=description;
}
publicStringgetUrl(){
returnUrl;
}
publicvoidsetUrl(Stringurl){
Url=url;
}
publicStringgetPicUrl(){
returnPicUrl;
}
publicvoidsetPicUrl(StringpicUrl){
PicUrl=picUrl;
}
publicStringgetMediaId(){
returnMediaId;
}
publicvoidsetMediaId(StringmediaId){
MediaId=mediaId;
}
publicStringgetEventKey(){
returnEventKey;
}
publicvoidsetEventKey(StringeventKey){
EventKey=eventKey;
}
publicStringgetTicket(){
returnTicket;
}
publicvoidsetTicket(Stringticket){
Ticket=ticket;
}
publicStringgetLatitude(){
returnLatitude;
}
publicvoidsetLatitude(Stringlatitude){
Latitude=latitude;
}
publicStringgetLongitude(){
returnLongitude;
}
publicvoidsetLongitude(Stringlongitude){
Longitude=longitude;
}
publicStringgetPrecision(){
returnPrecision;
}
publicvoidsetPrecision(Stringprecision){
Precision=precision;
}
publicStringgetEvent(){
returnEvent;
}
publicvoidsetEvent(Stringevent){
Event=event;
}
publicStringgetMsgId(){
returnMsgId;
}
publicvoidsetMsgId(StringmsgId){
MsgId=msgId;
}
publicStringgetToUserName(){
returnToUserName;
}
publicvoidsetToUserName(StringtoUserName){
1.2 相應的web.xml配置信息如下,在生成WechatServlet.java的同時,可自動生成web.xml中的配置。前面所提到的url處可以填寫例如:http;//伺服器地址/項目名/wechat.do
[html]view plain
1.3 通過以上代碼,我們已經實現了微信公眾平台開發的框架,即開通開發者模式並成功接入、接收消息和發送消息這三個步驟。
下面就講解其核心部分——解析接收到的xml數據,並以文本類消息為例,通過圖靈機器人api介面實現智能回復。
2.1 首先看一下整體流程處理代碼,包括:xml數據處理、調用圖靈api、封裝返回的xml數據。
[java]view plain
2.2 解析接收到的xml數據,此處有兩個類,ReceiveXmlEntity.java和ReceiveXmlProcess.java,通過反射的機制動態調用實體類中的set方法,可以避免很多重復的判斷,提高代碼效率,代碼如下:
[java]view plain
F. 怎麼用java程序向微信公眾平台發送信息
看看微信公眾平台開發者文檔吧。
接入微信公眾號後,java可以通過httpclient 給微信介面發送請求,
當然你的appid和secret必須有。。
不同的介面信息格式也是不相同,多看看文檔。
G. 關於製作微信公眾平台需要的java技術
得會jsp, 因為是基於網路的 如果有用到數據 還得有資料庫(mysql)另外你可以參考網上的一些源碼,主要是實現介面
H. 微信公眾平台有 java sdk 嗎
微信公眾平台有自己的java sdk的,微信公眾平台也是一個開發平台,他們對第三方開發企業開放介面,讓更多微信公眾平台運營人員使用第三方的工具,如活動推送工具,可以對接【活動盒子】的java sdk,支付工具,客服工具這些的sdk也都可以對接。
I. 怎麼搭建微信公眾平台java開發環境
這個比較復雜,首先需要申請一個微信公眾的訂閱好或服務號,還要開通各種介面,然後在本地安裝java開發環境,包括開發工具如eclipse,myeclipse。最重要的是能在公網有一個地址映射到本地,如果是在區域網,則需要藉助第三方工具,推薦使用花生殼、nat123,其中nat123是個比較好的工具,很好的解決了運營商80埠封鎖的問題,因為微信公眾平台配置伺服器的URL只能是80埠。有什麼不清楚的可以私信我。
J. 微信公眾平台 java開發 能用oracle資料庫嗎
微信公眾平台是可以開發java調用oracle這類型的介面的,一般通過MyBatis連接Oracle資料庫。
舉例如下:
1、先建立一個資料庫表,名為PERSON_INFO,建表SQL如下:
createTABLEPERSON_INFO
(
idnumber(12,0)PRIMARYKEY,
namevarchar2(20)NOTNULL,
genderchar(1)DEFAULT'',
remarkvarchar2(1000),
input_datenumber(10,0)DEFAULTto_number(to_char(sysdate,'yyyymmdd')),
input_timenumber(10,0)DEFAULTto_number(to_char(sysdate,'hh24miss'))
);
2、編寫java程序,項目中文件的上下級關系如圖:
5、建立對應的Java類:PersonInfo,其中各屬性對應於數據表PERSON_INFO中的各欄位
publicclassPersonInfo{
Longid;
Stringname;
Stringgender;
Stringremark;
LonginputDate;
LonginputTime;
publicLonggetId(){
returnid;
}
publicvoidsetId(Longid){
this.id=id;
}
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
publicStringgetGender(){
returngender;
}
publicvoidsetGender(Stringgender){
this.gender=gender;
}
publicStringgetRemark(){
returnremark;
}
publicvoidsetRemark(Stringremark){
this.remark=remark;
}
publicLonggetInputDate(){
returninputDate;
}
publicvoidsetInputDate(LonginputDate){
this.inputDate=inputDate;
}
publicLonggetInputTime(){
returninputTime;
}
publicvoidsetInputTime(LonginputTime){
this.inputTime=inputTime;
}
}
6、建立對應的Java類:PersonInfoMapper
importjava.util.List;
{
List<PersonInfo>selectAllPersonInfo();
7、建立一個類MyBatisTest用於存放main函數,查詢PERSON_INFO表中所有的數據並列印
importjava.io.InputStream;
importjava.util.List;
importorg.apache.ibatis.io.Resources;
importorg.apache.ibatis.session.SqlSession;
importorg.apache.ibatis.session.SqlSessionFactory;
importorg.apache.ibatis.session.SqlSessionFactoryBuilder;
/**
*MyBatis使用測試
*@author pieryon
*@date2016年4月1日
*@time下午21:47:01
*@remark
*
*/
publicclassMyBatisTest{
publicstaticvoidmain(String[]args){
try{
Stringresource="mybatis-config.xml";
InputStreaminputStream=Resources.getResourceAsStream(resource);
=newSqlSessionFactoryBuilder().build(inputStream);
SqlSessionsession=sqlSessionFactory.openSession();
try{
PersonInfoMappermapper=session.getMapper(PersonInfoMapper.class);
List<PersonInfo>personInfos=mapper.selectAllPersonInfo();
if(personInfos==null){
System.out.println("Theresultisnull.");
}else{
for(PersonInfopersonInfo:personInfos){
System.out.println("---PersonInfo---");
System.out.println("name:"+personInfo.name);
System.out.println("gender:"+personInfo.gender);
System.out.println("remark:"+personInfo.remark);
System.out.println("inputDate:"+personInfo.inputDate);
System.out.println("inputTime:"+personInfo.inputTime);
System.out.println();
}
}
}finally{
session.close();
}
}catch(Exceptionex){
ex.printStackTrace();
}
}
}
8、運行main函數,控制台輸出結果如下:
---PersonInfo---
name:Tsybius
gender:m
remark:-
inputDate:20160229
inputTime:225703
---PersonInfo---
name:Galatea
gender:f
remark:-
inputDate:20160228
inputTime:123456