2011-05-02 54 views
1

是否可以將XML數據發佈到iPhone OS的Web服務。 webservices是在ASP.net MVC 3.0中用RESTFul url開發的,我們希望iPhone開發者以XML格式發送輸入數據作爲POST變量。iPhone發佈xml到ASP.net MVC webservices

webservice actionresult看起來像下面,其中目擊是預期的參數通過爲POST變量

public ActionResult Update(XDocument sightings) 
{ 
    try 
    { 
     XMLHelper xmlHelper = new XMLHelper(); 
    } 
} 
+0

有關您的問題的任何更新? – 2011-05-04 12:28:22

+0

謝謝AhmadTK。我還沒有嘗試過代碼示例,因爲我的iPhone團隊尚未開始使用它。看起來這正是我想要的,並且會工作。稍後會更新你..謝謝... – Anand 2011-05-05 07:27:08

+0

我很高興聽到這個消息,只要你們準備好了,請告訴我你是否需要任何幫助。 – 2011-05-05 07:40:30

回答

2

這絕對適用所有你需要做的是使用NSMutableURLRequest如下所示:

NSString* sXMLToPost = @"<?xml version=\"1.0\"?><Name>user</Name>"; 

NSData* data = [sXMLToPost dataUsingEncoding:NSUTF8StringEncoding]; 

NSURL *url = [NSURL URLWithString:@"http://myurl.com/RequestHandler.ashx"]; 
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; 

[request setHTTPMethod:@"POST"]; 
[request setValue:@"application/xml; charset=utf-8" forHTTPHeaderField:@"Content-Type"]; 
[request setHTTPBody:[sXMLToPost dataUsingEncoding:NSUTF8StringEncoding]]; 

NSURLResponse *response; 
NSError *error; 
NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&err]; 

if (error) { 
//handle the error 
} 
在ASHX文件

而且現在解析InputStream讀取XML發佈:

System.IO.Stream str; String strmContents; 
Int32 counter, strLen, strRead; 

str = Request.InputStream; 

strLen = Convert.ToInt32(str.Length); 

byte[] strArr = new byte[strLen]; 

strRead = str.Read(strArr, 0, strLen); 

// Convert byte array to a text string. 
strmContents = ""; 
for (counter = 0; counter < strLen; counter++) 
{ 
    strmContents = strmContents + strArr[counter].ToString();    
} 

記住,你可以使用隨時查詢請求類型:

如果(context.Request.RequestType == 「POST」)

MSDN HttpRequest.InputStream