[英]How to pass edittext value from android to java RESTFUL webservice url
[英]POST on JAVA Restful WebService URL from JavaScript
我已經在Java中實現了RESTful Web服務,該服務將數據插入到MySQL數據庫中,我已經在mozila firefox和google chrome中使用POSTER測試了該服務。 我的Web服務使用帶有POST請求的字符串,現在我無法使用JS使用WEB SERVICE:在WEB SERVICE URL上進行POST請求的代碼如下:
$.ajax({
url: 'http://localhost:8080/AgentWS/webresources/Items',
type: 'POST',
contentType: 'application/xml',
dataType: 'xml',
data: 'content='+content,
success: function (data) {
alert(content);
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
alert("Error: " + errorThrown);
}
});
成功警報功能也不會顯示,並且對話框錯誤還會顯示一個帶有:錯誤:的對話框。
服務器端代碼為:
@POST
@Consumes("application/xml")
@Produces("application/xml")
public String postXml(String content) {
//TODO
// return Response.created(context.getAbsolutePath()).build();
StringTokenizer sp = new StringTokenizer(content, "&");
String agentName = sp.nextToken();
String agentId = sp.nextToken();
String agentState = sp.nextToken();
String agentExtension = sp.nextToken();
String agentDeviceState = sp.nextToken();
String agentDeviceStateChangeTime = sp.nextToken();
DBConection conn = new DBConection();
conn.insertAgentActivityInfo(agentName, agentId, agentState, agentExtension, agentDeviceState, agentDeviceStateChangeTime);
return agentName + " " + agentId + " " + agentState + " " + agentExtension + " " + agentDeviceState + " " + agentDeviceStateChangeTime;
}
我的猜測是, data: 'content='+content,
正在將無效的XML發布到服務器,並且您將收到500 Internal Server Error 。 您可以嘗試將data
設置為僅XML內容嗎? 喜歡
...
data: content,
....
如果您想要的只是一個簡單的帖子
@POST
public String postXml(String content) {
//TODO
// return Response.created(context.getAbsolutePath()).build();
StringTokenizer sp = new StringTokenizer(content, "&");
String agentName = sp.nextToken();
...
return agentName + " " + agentId + " " + agentState + " " + agentExtension + " " + agentDeviceState + " " + agentDeviceStateChangeTime;
}
$.ajax({
url: '/AgentWS/webresources/Items',
type: 'POST',
data: 'content=1&2&3&4&5&5',
success: function (data) {
alert(data);
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
alert("Error: " + errorThrown);
}
});
我認為問題在於您發送的數據,
data: 'content='+content
應替換為類似參數的名稱
data: {content:'content='+content}
並檢查您在服務器端正在做什么
這就是我的想法,您應該像這樣在服務器端編寫模型類Agent:
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
public class Agent
{
private String agentName;
private String agentId;
private String agentState;
private String agentExtension;
private String agentDeviceState;
private String agentDeviceStateChangeTime;
public String getAgentName() {
return agentName;
}
public void setAgentName(String agentName) {
this.agentName = agentName;
}
public String getAgentId() {
return agentId;
}
public void setAgentId(String agentId) {
this.agentId = agentId;
}
public String getAgentState() {
return agentState;
}
public void setAgentState(String agentState) {
this.agentState = agentState;
}
public String getAgentExtension() {
return agentExtension;
}
public void setAgentExtension(String agentExtension) {
this.agentExtension = agentExtension;
}
public String getAgentDeviceState() {
return agentDeviceState;
}
public void setAgentDeviceState(String agentDeviceState) {
this.agentDeviceState = agentDeviceState;
}
public String getAgentDeviceStateChangeTime() {
return agentDeviceStateChangeTime;
}
public void setAgentDeviceStateChangeTime(String agentDeviceStateChangeTime) {
this.agentDeviceStateChangeTime = agentDeviceStateChangeTime;
}
}
而您擁有的服務器休息服務應稍作更改:
@POST
@Consumes("application/xml")
@Produces("application/xml")
public String postXml(Agent agent) {}
在此方法內部,您可以使用傳遞的“ agent”對象來檢索客戶端發送的所有值,例如agent.getAgentName()
現在,有效負載(或請求主體)應包含以下內容:
<Agent>
<agentName></agentName>
<agentId></agentId>
<agentState></agentState>
<agentExtension></agentExtension>
<agentDeviceState></agentDeviceState>
<agentDeviceStateChangeTime></agentDeviceStateChangeTime>
</Agent>
希望對您有所幫助。
沒有錯誤代碼和消息很難猜測,但是:
更改
data: 'content='+content
至
data: { content : content } // format as json
在您的Java資源中:
@POST
@Consumes(MediaType.APPLICATION_JSON)
public String postXml(String content)
// read content as json
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.