使用agsXMPP SDK向Openfire發送文件的注意事項

使用agsXMPP向Openfire發送文件,一直被service-unavailable錯誤困擾,詳細錯誤如片段1-1所示。使用agsXMPP自帶的Demo MiniClient項目,可以正常發送文件,但在自己的項目中卻發送失敗。

片段1-1

<iq xmlns="jabber:client" to="[email protected]/XmppDemo" id="agsXMPP_5" type="error">
	<si xmlns="http://jabber.org/protocol/si" id="a3536b74-8a75-4ce2-9d84-59088b31bba3" 
		profile="http://jabber.org/protocol/si/profile/file-transfer">
		<file xmlns="http://jabber.org/protocol/si/profile/file-transfer" name="data.xlsx" size="9688"><range /></file>
		<feature xmlns="http://jabber.org/protocol/feature-neg">
			<x xmlns="jabber:x:data" type="form">
				<field var="stream-method" type="list-single">
					<option><value>http://jabber.org/protocol/bytestreams</value></option>
				</field>
			</x>
		</feature>
	</si>
	<error type="cancel" code="503">
		<service-unavailable xmlns="urn:ietf:params:xml:ns:xmpp-stanzas" />
	</error>
</iq>

具體步驟:

1、搭建Openfire服務器,確保5222、7777端口正常,在服務器設置中已啓用“文件傳送代理”。

2、Openfire配置如圖1-1所示,設置正確的xmpp.domain,例如im.openfire.com,確保域名可ping通。

圖1-1

3、修改文件frmFileTransfer.cs中的const string PROXY = "proxy.ag-software.de"爲const string PROXY = "proxy.im.huiyaosoft.com",其中域名必須遵循proxy.樣式。

4、發送文件時,必須指定jid.Resource,否則報503錯誤,如片段1-2所示。。

片段1-2

Jid jid = new Jid(username + xmppDomain);
jid.Resource = xmppCon.Resource;
frmFileTransfer ft = new frmFileTransfer(xmppCon, jid);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章