[英]iOS send command to web server
所有,
我有一個帶Web服務器的OBDII設備。 我通過wifi連接。 我想創建一個應用程序來發送命令並讀取從設備接收的數據。
我首先使用Terminal對其進行測試。 我使用telnet會話進行連接,可以發送命令(0104),並且得到響應。 這很好。
現在,我想創建一個應用程序來執行相同的操作。 我知道我可以使用以下方法進行連接:
- (void)initNetworkCommunication {
CFReadStreamRef readStream;
CFWriteStreamRef writeStream;
CFStreamCreatePairWithSocketToHost(NULL, (CFStringRef)@"192.168.0.10", 35000, &readStream, &writeStream);
inputStream = (NSInputStream *)readStream;
outputStream = (NSOutputStream *)writeStream;
[inputStream setDelegate:self];
[outputStream setDelegate:self];
[inputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[outputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[inputStream open];
[outputStream open];
}
連接正常。
然后,我要發送命令。 我用這個:
- (IBAction)sendCommand:(id)sender {
NSString *response = [NSString stringWithFormat:@"%@", commandText.text];
NSData *data = [[NSData alloc] initWithData:[response dataUsingEncoding:NSASCIIStringEncoding]];
[outputStream write:[data bytes] maxLength:[data length]];
}
但是我沒有得到正確的答案,我得到了? 背部。 因此設備無法識別該命令...
我究竟做錯了什么? 格式錯誤嗎? 不應該是字符串嗎? 還是應該不同於ASCII?
我已經嘗試將\\ r放在命令末尾,但這無濟於事。
解:
發送帶有附加\\ r \\ n的數據。 也可以更改UTF編碼中的編碼,但這不是強制性的...
- (IBAction)sendCommand:(id)sender {
NSString *response = [NSString stringWithFormat:@"%@\r\n", commandText.text];
NSLog(@"Response send: %@", response);
NSData *data = [[NSData alloc] initWithData:[response dataUsingEncoding:NSUTF8StringEncoding]];
NSInteger bytesWritten = [outputStream write:[data bytes] maxLength:[data length]];
}
...其中有一個網絡服務器。 我通過wifi連接...
如果是這樣,那么人們會認為最好的解決方案是高級解決方案。 使用NSURLRequest
發送您的請求,並在NSHTTPURLResponse
獲取數據。 讓iOS為您處理HTTP事務。 如果那不起作用,那么您設備的服務器就不能真正稱為Web服務器。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.